在 C# 中,有没有办法重载比较运算符,例如==
,=<
或>
在用户定义的对象上?
类似于你可以写"string"=="string"
而不是"string".Equals("string")
我知道您可以定义 CompareTo 和 Equals 函数,但我想知道是否有快捷方式。
在 C# 中,有没有办法重载比较运算符,例如==
,=<
或>
在用户定义的对象上?
类似于你可以写"string"=="string"
而不是"string".Equals("string")
我知道您可以定义 CompareTo 和 Equals 函数,但我想知道是否有快捷方式。
==
您可以通过在所需的中实现具有以下签名的函数来覆盖 C# 中的运算符class
:
public static bool operator ==(YourClass a, YourClass b) { }
这同样适用于<=
和>
运算符。
通过覆盖,==
您还必须覆盖!=
,并且建议重载Equals
andGetHashcode
函数。
有关更多信息,请阅读:
简单的例子:
class Foo
{
public int Id { get; set; }
public static bool operator ==(Foo first, Foo second)
{
return first.Id == second.Id;
}
public static bool operator !=(Foo first, Foo second)
{
return first.Id != second.Id;
}
}
您还应该覆盖 Equals 和 GetHashCode