C# 重载==null的运算符
我有一个名为C# 重载==null的运算符,c#,.net,null,operator-overloading,equals-operator,C#,.net,Null,Operator Overloading,Equals Operator,我有一个名为Message的类,它重载这些运算符: public static bool operator ==(Message left, Message right) public static bool operator !=(Message left, Message right) public static bool operator ==(Message left, string right) public static bool operator !=(Message left,
Message
的类,它重载这些运算符:
public static bool operator ==(Message left, Message right)
public static bool operator !=(Message left, Message right)
public static bool operator ==(Message left, string right)
public static bool operator !=(Message left, string right)
public static bool operator ==(string left, Message right)
public static bool operator !=(string left, Message right)
我想要==
和=代码>运算符不断比较除字符串
和消息
之外的其他类型的引用,但是
var message = new Message();
var isNull = message == null;
给我这个:
以下方法或属性之间的调用不明确:“Message.operator==(Message,Message)”和“Message.operator==(Message,string)”
我知道这是因为Message
和String
都是引用类型,它们都可以是null
,但我希望能够使用=
操作符来检查消息是否为null
我是否可以为空值重载==
?我尝试为对象
重载它,并在重载中调用对象。ReferenceEquals(object,object)
,但没有帮助。为操作符==(Message left,object right)
提供一个实现,并检查right
的类型,以查看它是null、字符串还是消息
或者,为接受字符串的消息定义隐式构造函数。例如,请参阅。如果不想这样做(我不建议这样做),则必须将null
强制转换为一种适用的类型<代码>消息==(字符串)空代码>或消息==(消息)空
应该可以用。@verdesmarald:可以,但我希望能找到一种直接使用它的方法。顺便说一句,你推荐什么?不,据我所知,如果你想有多个operator==
s,你不能这么做。