c# – 重写等于运算符
发布时间:2020-12-16 00:15:07 所属栏目:百科 来源:网络整理
导读:我试图覆盖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;
我试图覆盖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 == (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |