Большинство ответов верны, я просто приведу немного подробнее:
Любой экземпляр класса, производный от System.Object, за исключением тех, которые являются классами System.ValueType, является "Ссылка "класс.«Ссылочный» класс состоит из двух частей;«мясо» экземпляра помещается в память программы, называется «куча», а затем «стек» или «указатель» на этот адрес памяти помещается в стек.Для получения дополнительной информации о том, что такое стек и куча, и почему они необходимы, обратитесь к документации MSDN или основам компьютерного программирования.
В .NET - сравнение по умолчанию равенства двух переменных в ссылкеТип для сравнения адресов памяти, хранящихся в переменных.Это «эталонное равенство»;если две переменные указывают на один и тот же адрес памяти, они равны.Если нет, то это не так.
Для "семантического" или "структурного" равенства требуется более глубокий взгляд на то, что живет в пространстве памяти каждой переменной.Это не может быть сделано в общем случае;Разработчик должен определить для каждого класса, который он хочет сравнить, что делает два экземпляра его класса семантически равными.Это достигается путем переопределения метода Equals (), который унаследован от класса Object (и, следовательно, является общим для всех классов .NET).Переопределение Equals обычно имеет следующую структуру:
public override bool Equals (object other)
{
//Reference equality is still a simple and necessary check
if(Object.ReferenceEquals(this, other)) return true;
//Another simple check; the two objects should be the same type
if(this.GetType() != other.GetType()) return false;
//Now, compare members of the object that you want to use to determine
//"semantic" equality. These members, if also reference types, must also
//be "semantically" equal.
if(this.Property1 == other.Property1 && this.FieldA == other.FieldA && ... )
return true;
return false;
}
Реализация интерфейсов IComparable, IEquatable и IStructuralEquatable дает подсказки потребителям о том, что автор текущего класса имеет пользовательское определение равенства или другого сравнения.Они необходимы в некоторых случаях, а не во всех.