是否可以在C#中覆盖类的null-coalescing运算符?
比方说,如果实例为null,我想返回默认值,如果不是,则返回实例.代码看起来像这样:
return instance ?? new MyClass("Default");
但是如果我想使用null-coalescing运算符来检查是否设置了MyClass.MyValue呢?
当然没有真正的需要(至少我是这么认为) - 所以在你回答"你为什么要这样做"之前 - 我只是好奇是否有可能.
好问题!它没有在可重载和不可重载的运算符列表中以这种或那种方式列出,并且在运营商页面上没有提到任何内容.
所以我尝试了以下方法:
public class TestClass { public static TestClass operator ??(TestClass test1, TestClass test2) { return test1; } }
我收到错误"预期可重载二进制运算符".所以我要说答案是,从.NET 3.5开始,没有.
根据ECMA-334标准,不可能超载?运营商.
同样,您不能重载以下运算符:
=
&&
||
?
检查
未选中
新
类型
如
是
简单回答:不
C#设计原则不允许运算符重载改变语言的语义.因此,复合赋值,三元运算符和...等复杂运算符不能重载.