Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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#对象比较_C# - Fatal编程技术网

C#对象比较

C#对象比较,c#,C#,在C#中,是否有一种方法可以重载用户定义对象上的比较运算符,例如=,= 类似于您如何编写“string”==“string”而不是“string”。等于(“string”) 我知道您可以定义CompareTo和Equals函数,但我想知道是否有快捷方式。您可以通过在所需的类中实现具有以下签名的函数来覆盖C中的=运算符: publicstaticbool操作符==(yourclassea,yourclasseb){} 这同样适用于操作员 通过覆盖==,您还必须覆盖=,建议重载Equals和GetH

在C#中,是否有一种方法可以重载用户定义对象上的比较运算符,例如
=
=

类似于您如何编写
“string”==“string”
而不是
“string”。等于(“string”)


我知道您可以定义CompareTo和Equals函数,但我想知道是否有快捷方式。

您可以通过在所需的
类中实现具有以下签名的函数来覆盖C中的
=
运算符:

publicstaticbool操作符==(yourclassea,yourclasseb){}

这同样适用于
操作员

通过覆盖
==
,您还必须覆盖
=
,建议重载
Equals
GetHashcode
函数

有关更多信息,请阅读:

简单示例:

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

仅链接的答案在堆栈溢出时被认为是不可接受的。如果您要发布内容的链接,还应解释链接、引用相关章节,或对内容进行足够的总结,以便问题完全在您的文章中得到回答,而链接只是可选的,不需要查看解决方案。@Servy谢谢!我不知道。我会弥补的!你可以随时为你的班级做准备。提议的副本的可能副本显然不是这个问题的副本;他问的是如何重载操作符,而不是它们的合理实现。