.net 运算符重载

本文关键字:重载 运算符 net | 更新日期: 2023-09-27 18:34:20

为什么在某些运算符上需要它,例如比较运算符。

<   <=   >   >=   =  <>

您还必须实施他们的补充吗?

<  >=

什么是限制你的对象实现

<

如果这有特定的含义,以及

>= 

注意:我的解决方法是将"过时"属性粘贴在不需要的运算符上。

.net 运算符重载

.Net 中的运算符重载

(至少对于 C# 和 VB)故意不如 C++ 中的运算符重载灵活。

Java甚至完全消除重载的一个原因是,太多的开发人员滥用重载来做一些看起来很聪明的事情,这让其他开发人员感到困惑,并打破了通用算法的核心假设,这些算法希望能够合理地比较用户类型的两个实例。

虽然 .Net 恢复了一些灵活性,但设计人员小心翼翼地只允许重载某些运算符,目的是它们仅用于其习惯含义。

对称地实现比较运算符的要求是对这一意图的认可。

如果要执行更激进的运算符重载,我建议您考虑使用 F#,您可以在其中访问更广泛的符号调色板,从而绘制巧妙的运算符符号。

大概是因为如果重载运算符的一侧,则正在实现一些自定义规则,而默认运算符将与您的规则不匹配,从而产生奇怪的行为。

例如,如果您对"int>"的定义是"return (x> 5);"(出于某种原因...然后,您没有覆盖"int <"运算符的逆规则;

4> 1 为假(根据规则),但 4 <1 也为假(根据默认规则)。

这是不合逻辑的,吉姆。