当前位置:  开发笔记 > 编程语言 > 正文

可以覆盖null合并运算符吗?

如何解决《可以覆盖null合并运算符吗?》经验,为你挑选了3个好方法。

是否可以在C#中覆盖类的null-coalescing运算符?

比方说,如果实例为null,我想返回默认值,如果不是,则返回实例.代码看起来像这样:

   return instance ?? new MyClass("Default");  

但是如果我想使用null-coalescing运算符来检查是否设置了MyClass.MyValue呢?

当然没有真正的需要(至少我是这么认为) - 所以在你回答"你为什么要这样做"之前 - 我只是好奇是否有可能.



1> Simon..:

好问题!它没有在可重载和不可重载的运算符列表中以这种或那种方式列出,并且在运营商页面上没有提到任何内容.

所以我尝试了以下方法:

public class TestClass
{
    public static TestClass operator ??(TestClass  test1, TestClass test2)
    {
        return test1;
    }
}

我收到错误"预期可重载二进制运算符".所以我要说答案是,从.NET 3.5开始,没有.



2> Pete OHanlon..:

根据ECMA-334标准,不可能超载?运营商.

同样,您不能重载以下运算符:

=

&&

||

检查

未选中

类型



3> Mehrdad Afsh..:

简单回答:不

C#设计原则不允许运算符重载改变语言的语义.因此,复合赋值,三元运算符和...等复杂运算符不能重载.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有