gpt4 book ai didi

c# - 为 null 重载 == 运算符

转载 作者:太空狗 更新时间:2023-10-29 23:09:18 26 4
gpt4 key购买 nike

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

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

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

给我这个:

The call is ambiguous between the following methods or properties: 'Message.operator ==(Message, Message)' and 'Message.operator ==(Message, string)'

我知道是因为MessageString都是引用类型,它们都可以是null,但是我希望能够使用== 运算符,用于检查消息是否为空。

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

最佳答案

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

或者,为采用字符串的 Message 定义一个隐式构造函数。参见 Operator overloading and different types举个例子。

关于c# - 为 null 重载 == 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com