Чтобы выполнить что-то вроде Item_1 != Item_2
или Item_1 == Item_2
и получить все свойства (или те, которые вы хотите) для сравнения, вам необходимо реализовать собственный метод Equals
и перегрузки операторов ==
, !=
.
==
оператор, от MSDN :
Для ссылочных типов, кроме строки, == возвращает true, если два его операндаобратитесь к тому же объекту.
Для этого вы можете начать с простого решения, реализовать интерфейс IEquatable<T>
, заполнить логику сравнения внутри метода Equals
и перегрузить ==
и !=
операторы внутренне вызывают ваш типобезопасный Equals
метод:
public class ClassName : IEquatable<ClassName>
{
public int ID;
public String n_1 { get; set; }
public String n_2 { get; set; }
// ....
public String n_x { get; set; }
public static bool operator ==(ClassName obj1, ClassName obj2)
{
if (((object)obj1) == null || ((object)obj2) == null)
return Equals(obj1, obj2);
return obj1.Equals(obj2);
}
public static bool operator != (ClassName obj1, ClassName obj2)
{
if (((object)obj1) == null || ((object)obj2) == null)
return !Equals(obj1, obj2);
return !obj1.Equals(obj2);
}
public bool Equals(ClassName obj)
{
if (obj == null) return false;
return (n_1 == obj.n_1) && (n_2 == obj.n_2) && (n_x == obj.n_x); //you can ignore ID here
}
public override bool Equals(object obj)
{
if (obj == null)
return false;
ClassName classNameObj = obj as ClassName;
if (classNameObj == null)
return false;
else
return Equals(classNameObj);
}
public override int GetHashCode()
{
//This code was generated by VS ide, you can write your own hashing logic
var hashCode = 1032198799;
hashCode = hashCode * -1521134295 + ID.GetHashCode();
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(n_1);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(n_2);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(n_x);
return hashCode;
}
}
Затем вы можете проверить свой if
:
if (Item_1 != Item_2)
{
//Do Something
}
Для Equals
метода вы должны придерживаться Рекомендации по переопределению равенства () и оператора == .
Ссылки: == Оператор , ! = Оператор , IEquatable интерфейс , IEquatable.Equals (T) Метод , Рекомендации по переопределению Equals () и оператора ==