Сравнение объектов по значению полей, если одним полем является List
Есть 2 объекта, одним полем которого может являться List.
public class pDataStruct<T, O>
{
public String Name;
public T Tag;
public O Object;
}
Например полем Object такого объекта может являться List или просто bool. Как грамотно перегрузить Equals или сравнивать объекты по значению полей Tag и Object. Можно ли реализовать универсальную функцию сравнения, которая вызывала нужный Equals для сравнения полей по значению.
Ответы (1 шт):
Автор решения: Nicholas Goncharov
→ Ссылка
- Использовать ключевые слова, даже изменяя регистр какого-то символа - является дурным тоном. (в вашем случае поле
public O Object;); - Ситуации, когда у вас в одном случае поле может быть bool, а в другом List - является плохой реализацией вашей архитектуры, стоит подумать, как это сделать по другому для вашей задачи;
- Нужно четко понимать какими будут
TиO- что из этого может быть только типом значения, а что ссылочным типом, и для всех полей, что являются ссылочным типом стоит использовать метод.Equals()
Как пример:
object fst = 5, snd = 5;
bool eq1 = (fst == snd); // false
bool eq2 = fst.Equals(snd); // true
Но для списков лучше использовать метод .SequenceEqual()
В вашем случае, как вариант, можно воспользоваться сравнением типа и проверить, является ли он bool if (Object is bool) аналогично и для List