为了比较相等,你可以实现Equals
,让我们在接口的帮助下做
IEquatable<MyObject>
:
public class MyObject : IEquatable<MyObject> {
public string firstname { get; set; }
public string lastname { get; set; }
public int age { get; set; }
public string occupation { get; set; }
public bool Equals(MyObject other) {
if (ReferenceEquals(this, other))
return true;
if (null == other)
return false;
return
string.Equals(firstname, other.firstname, StringComparison.OrdinalIgnoreCase) &&
string.Equals(lastname, other.lastname, StringComparison.OrdinalIgnoreCase) &&
string.Equals(occupation, other.occupation, StringComparison.OrdinalIgnoreCase) &&
age == other.age;
}
public override bool Equals(object obj) => obj is MyObject other && Equals(other);
public override int GetHashCode() =>
(firstname?.GetHashCode(StringComparison.CurrentCultureIgnoreCase) ?? 0) ^
(lastname?.GetHashCode(StringComparison.CurrentCultureIgnoreCase) ?? 0) ^
(occupation?.GetHashCode(StringComparison.CurrentCultureIgnoreCase) ?? 0) ^
age;
}
然后你可以使用定制的Equals
if (myObject1.Equals(myObject2)) {...}