5

我有一个名为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)

我希望==and运算符继续比较and but!=以外的类型的引用,StringMessage

var message = new Message();
var isNull = message == null;

给了我这个:

以下方法或属性之间的调用不明确:'Message.operator ==(Message, Message)' 和 'Message.operator ==(Message, string)'

我知道这是因为MessageString都是引用类型并且它们都可以是null,但我希望能够使用==opreator 来检查消息是否为空。

我可以==为空值重载吗?我尝试重载它object并调用object.ReferenceEquals(object, object)重载,但这没有帮助。

4

1 回答 1

6

提供一个实现operator ==(Message left, object right)并检查它的类型right以查看它是空值、字符串还是消息。

或者,为 Message 定义一个采用字符串的隐式构造函数。有关示例,请参阅运算符重载和不同类型。

于 2012-09-24T07:06:18.607 回答