我有两个不同的对象需要进行相等性比较
我可以使用反射来编写一些代码来比较属性值但是想知道.net 4.0中是否有任何新模式可以解决这个问题
答案 0 :(得分:6)
我可以使用反射来编写一些代码来比较属性值但是想知道.net 4.0中是否有任何新模式可以解决这个问题
没有。你必须自己写。
答案 1 :(得分:0)
您可以在公共接口中实现公共比较属性,并将它们作为该接口类型进行比较。
答案 2 :(得分:0)
您需要您的类实现IComparable
,然后覆盖并实现CompareTo
方法,以帮助C#了解它应该如何比较这些对象。
作为一个例子,我想比较两个小部件。它是一个包含整数和字符串的复杂类。我相信整数和字符串长度的组合将决定哪个对象更大。
Class MyWidget : IComparable
{
public int Piece { get; set; }
public string Thing { get; set; }
public MyWidget()
{
this.Piece = 1;
this.Thing = "default";
}
public int CompareTo(object obj)
{
var otherWidget = obj as MyWidget;
if (otherWidget != null)
{
return (this.Piece + this.Thing.Length).CompareTo(otherWidget.Piece + otherWidget.Thing.Length);
}
else
{
throw new ArgumentException("Object is not a MyWidget");
}
}
}
答案 3 :(得分:0)
如果您要比较对象,可能需要重新定义 Equals()函数,如下所示:
public override bool Equals(Object obj)
{
User testedUser = (User)obj;
if (this._userName == testedUser.UserName &&
this._userPassword == testedUser.UserPassword)
{
return true;
}
else
{
return false;
}
}
然后你可以简单地做一个:userbob.Equals(userAnne)
答案 4 :(得分:0)