c# – 重写等于运算符

c# – 重写等于运算符,第1张

概述我试图覆盖Equals,以便它根据变量ID进行比较: public class OrderID{ public string ID { get; private set; } public OrderID(string id) { ID = id; } public override bool Equals(object obj) 我试图覆盖Equals,以便它根据变量ID进行比较:

public class OrderID{    public string ID { get; private set; }    public OrderID(string ID)    {        ID = ID;    }    public overrIDe bool Equals(object obj)    {        if (obj is OrderID)        {            return ((OrderID)obj).ID == ID;        }        else return false;    }    public overrIDe string ToString()    {        return ID;    }}

但是,当我以下面的方式测试它时,它返回false:

static voID Main(string[] args){    OrderID i1 = new OrderID("Hello");    OrderID i2 = new OrderID("Hello");    bool test = i1 == i2;    Console.Writeline(test.ToString());    Console.ReadKey();}

问题是什么?当我尝试单步执行它时,我的覆盖甚至没有进入.

解决方法 对象的Equals()方法与’==’运算符不同.您需要重载类型上的’==’运算符,或调用i1.Equals(i2)而不是i1 == i2.

MSDN Guidelines for Overloading Equals() and Operator ==

总结

以上是内存溢出为你收集整理的c# – 重写等于运算符全部内容,希望文章能够帮你解决c# – 重写等于运算符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223056.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存