C# .net运算符重载
为什么某些操作符(如比较操作符)需要它C# .net运算符重载,c#,.net,overloading,operator-keyword,C#,.net,Overloading,Operator Keyword,为什么某些操作符(如比较操作符)需要它 < <= > >= = <> 没有 注意:我的解决方法是将过时属性粘贴到不需要的操作符上 可能是因为如果您重载运算符的一侧,您正在实现一些自定义规则,而默认运算符将与您的规则不匹配,从而产生奇怪的行为 例如,如果“int>”的定义是“return(x>5);”(出于某些原因…)并且您没有为“int覆盖反向规则,可能是因为如果您重载运算符的一侧,您正在实现一些自定义规则,默认运算符将与您的规则不匹配,从
< <= > >= = <>
没有
注意:我的解决方法是将过时属性粘贴到不需要的操作符上 可能是因为如果您重载运算符的一侧,您正在实现一些自定义规则,而默认运算符将与您的规则不匹配,从而产生奇怪的行为
例如,如果“int>”的定义是“return(x>5);”(出于某些原因…)并且您没有为“int覆盖反向规则,可能是因为如果您重载运算符的一侧,您正在实现一些自定义规则,默认运算符将与您的规则不匹配,从而产生奇怪的行为
例如,如果“int>”的定义是“return(x>5);”(由于某种原因……),你并没有过度地考虑“int”P>运算符重载在.NET中(至少对于C++和VB)的反规则,它比C++中的运算符重载更不灵活。 Java完全消除重载的一个原因是,太多的开发人员滥用重载来做一些看起来很聪明的事情,这让其他开发人员感到困惑,并打破了通用算法的核心假设,这些算法期望能够(比如)合理地比较一个用户类型的两个实例 尽管.Net带来了一些灵活性,但设计者们还是小心地只允许某些操作符重载,目的是它们只用于其习惯意义 对称实现比较运算符的要求就是对这一意图的认可
如果你想做更具攻击性的操作符重载,我鼓励你考虑使用F,你可以访问更宽的调色板,用它绘制聪明的操作符符号。
运算符重载in .NET(至少对于C++和VB)是故意的,比C++中的运算符重载灵活。
Java完全消除重载的一个原因是,太多的开发人员滥用重载来做一些看起来很聪明的事情,这让其他开发人员感到困惑,并打破了通用算法的核心假设,这些算法期望能够(比如)合理地比较一个用户类型的两个实例 尽管.Net带来了一些灵活性,但设计者们还是小心地只允许某些操作符重载,目的是它们只用于其习惯意义 对称实现比较运算符的要求就是对这一意图的认可如果你想做更具攻击性的运算符重载,我鼓励你考虑使用f*,在那里你可以访问一个更宽泛的符号调色板,用它来画出聪明的运算符符号。
< <代码> xx如何具有特定的含义,但是y>=x
没有,除非您重载运算符使其含义与直观含义大不相同,否则您可以更自然地实现绑定检查Lower=<=!=”它不局限于只返回一个bool,它可以返回(我认为)任何类型的bool它不局限于只返回一个bool,它可以返回(我认为)任何类型的bool。
< >=
<
>=