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

标签 c# java oop solid-principles single-responsibility-principle

<分区>

如标题所述,为什么任何对象都应继承 ToString() 方法(例如在 C# 或 Java 中)并以某种方式关心将其转换为字符串?在某些情况下,这不是违反了单一职责原则吗?我的意思是,如果您的对象不需要转换为字符串,您最终会为您的对象承担更多责任。

最佳答案

从某种意义上说,ToString()确实违反了单一职责原则。转换为字符串表示形式不应该必然是每个对象类型的要求。在 C# 中,GetHashCode() 可以说更糟糕 - 并且再次定义在每种类型上。这可以通过其他一些机制轻松完成(即:一个可选的接口(interface),以及一个负责将任何对象转换为字符串的类,等等)。

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

关于c# - ToString() 方法是否违反 SRP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362545/

相关文章:

java - 创建一个可以充当另一个类的类

objective-c - 使用父类(super class)初始化器初始化一个类

java - 如何强制java对象以特定顺序实例化它的实例变量?

c# - WPF ListBox 按钮选择的项目

c# - C# 字节数组中的空元素

C# 4 和 CLR 兼容性

java - 在 Hadoop 排序中映射中的键类型不匹配

c# - 观察者能否使用 Rx 安全地监听多个可观察对象?

java - Spring 集成 sftp :inbound-channel-adapter delete-remote-files=false

algorithm - 我们应该如何设计/编写一个连接池