【发布时间】:2018-11-16 10:33:48
【问题描述】:
所以我创建了一个这样的类:
public class ClassName
{
public int ID;
public String n_1 {get; set; }
public String n_2 {get; set; }
// ....
public String n_x {get; set; }
}
稍后在我的代码中,我比较了 2 个ClassName 对象:
ClassName Item_1 /*...*/ ;
ClassName Item_2 /*...*/ ;
像这样:
if (Item_1 != Item_2 && Item_1.n_a == Item_2.n_a)
{
//do something
}
现在我的问题是 Item_1.ID 和 Item_2.ID 应该被忽略。有没有简单的方法来做到这一点?我想出的唯一解决方案是不费吹灰之力
if ( (Item_1.n_1 != Item_2.n_1 || Item_1.n_2 != Item_2.n_2 || /* ... */ ) && Item_1.n_a == Item_2.n_a)
【问题讨论】:
-
这有什么问题?如果您正在进行手动比较并且您已经忽略了
ID? -
你应该检查IComparable<T>接口
-
通过
Item_1 != Item_2,您实际上不会检查两个对象的所有属性是否不相等,它只会检查存储在Item_1和Item_2中的引用是否不相等。 -
@axbeit 我在答案中添加了一些解释,您可以查看,如果您有任何问题,请随时提问。
标签: c# class if-statement compare