在什么情况下您会考虑在 .NET 中重载运算符?
最佳答案
- 我会强烈考虑在我覆盖
Equals
的任何地方重载 == 和 != - 我会考虑(不太强烈)在我实现
IComparable<T>
的任何地方重载比较运算符 - 我会考虑为基本数字类型重载算术运算符
- 我会考虑为“包装”类型(如
Nullable<T>
)提供显式转换 - 我非常很少考虑提供隐式转换
黄金法则是不要在含义不完全明显时重载运算符。例如,我认为在 Stream
上使用 + 运算符会很奇怪。 - 它可能意味着“在这里制作一个可写的 T,以便写入结果写入两者”或者它可能意味着“一个接一个地读取”或者可能是其他东西。
根据我的经验,除了 == 和 != 之外很少重载任何东西。
关于c# - .NET 中的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399234/