c# - .NET 中的运算符重载

标签 c# .net vb.net operator-overloading

在什么情况下您会考虑在 .NET 中重载运算符?

最佳答案

  • 我会强烈考虑在我覆盖 Equals 的任何地方重载 == 和 !=
  • 我会考虑(不太强烈)在我实现 IComparable<T> 的任何地方重载比较运算符
  • 我会考虑为基本数字类型重载算术运算符
  • 我会考虑为“包装”类型(如 Nullable<T>)提供显式转换
  • 非常很少考虑提供隐式转换

黄金法则是不要在含义不完全明显时重载运算符。例如,我认为在 Stream 上使用 + 运算符会很奇怪。 - 它可能意味着“在这里制作一个可写的 T,以便写入结果写入两者”或者它可能意味着“一个接一个地读取”或者可能是其他东西。

根据我的经验,除了 == 和 != 之外很少重载任何东西。

关于c# - .NET 中的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399234/

相关文章:

c# - c# 从高到低对列表(字符串)进行数字排序

.net - Visual Studio 2003 是否仍然可用/受支持

c# - VB.NET 中代码注释和 XML 注释的不同颜色

vb.net - .dispose() 的最佳应用是什么

vb.net - 从单应性中提取变换和旋转矩阵?

c# - 使用BackGroundWorker的错误处理条件失败

c# - 在 Unity 2D 中拖动对象

c# - TempData Like Object in WebForms - 只有 1 个附加请求的 session 状态

c# - 我如何并行化这种模式?

.net - 如何为 ClickOnce 应用程序设置 Windows Installer 4.5 的 Bootstrap 包?