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)
我想==
和!=
运营商保持比String
和Message
,但其他类型的比较基准,
var message = new Message();
var isNull = message == null;
给了我这样的:
呼叫是下述方法或属性之间暧昧:“Message.operator ==(消息,消息)”和“Message.operator ==(消息,字符串)”
我知道这是因为这两个Message
和String
是引用类型,他们都可以null
,但我希望能够使用==
opreator检查邮件是否为空。
我可以重载==
为空值?我试图重载它object
,并呼吁在过载object.ReferenceEquals(object, object)
但没有帮助。
如果你wan't做这样(我不推荐),你将不得不投'null'适用的类型之一。 'message ==(string)null;'或'message ==(Message)null;'应该工作。 – verdesmarald
@verdesmarald:是的,这有效,但我希望找到直接使用它的方法。你推荐什么顺便说一句? –
不,据我所知,如果你想有多个'operator ==',你不能这么做。 – verdesmarald