Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重载==null的运算符_C#_.net_Null_Operator Overloading_Equals Operator - Fatal编程技术网

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,你不能这么做。