c# – ToString()方法是否违反了SRP?

正如标题所述,为什么任何对象应该继承ToString()方法(例如在C#或Java中)并以某种方式关注将其转换为String?在某些情况下,这不违反单一责任原则吗?我的意思是,如果你的对象不需要转换为字符串,你最终会对你的对象有更多的响应能力.
最佳答案
从某种意义上说,ToString()确实违反了单一责任原则.转换为字符串表示不一定是每个对象类型的要求.在C#中,GetHashCode()可能更糟 – 并且再次定义在每种类型上.这很容易通过其他一些机制完成(即:一个可选的接口,一个负责将任何对象转换为字符串的类等).

这是一个实用性与正确性的问题.在每个提供字符串表示的对象上有一个方法(可以说是)使得一些事情总体上更简单,代价是让每个对象实现它.话虽这么说,如果对象对默认实现感到满意,则不需要承担这个责任.

转载注明原文:c# – ToString()方法是否违反了SRP? - 代码日志