Что такое «.Net Identity»? - PullRequest
3 голосов
/ 22 июня 2011

Я видел это предложение в одной книге:

"Реализация по умолчанию Equals (), определенная System.Object, которая использует сравнение по идентификатору .NET."

Означает ли .Net Identity адрес памяти, выделенный в памяти как для типов ссылок, так и для типов значений?

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Из MSDN:

Реализация Equals по умолчанию поддерживает равенство ссылок для ссылочных типов и битовое равенство для типов значений.Равенство ссылок означает, что сравниваемые ссылки на объекты ссылаются на один и тот же объект.Побитовое равенство означает, что сравниваемые объекты имеют одинаковое двоичное представление.

Отвечает ли он на ваш вопрос?

0 голосов
/ 22 июня 2011

Два экземпляра класса являются «идентичными», если они фактически являются одним и тем же экземпляром (в одной и той же ячейке памяти).
Реализация IMHO по умолчанию вызывает Object.ReferenceEquals.

Две структуры «идентичны», есливсе их значения равны, что означает, что они поразрядно идентичны.
Реализация по умолчанию здесь использует отражение для сравнения всех членов IMHO.

Однако оба поведения могут быть переопределены с помощью метода Equals.

0 голосов
/ 22 июня 2011

В этом случае ознакомьтесь с официальной документацией.

http://msdn.microsoft.com/en-us/library/bsc2ak47(v=vs.80).aspx

Стандартная реализация Equals поддерживает только ссылочное равенство, но производные классы могут переопределять этот метод для поддержкиравенство значений.

Для ссылочных типов равенство определяется как равенство объектов;то есть ссылки ссылаются на один и тот же объект.Для типов значений равенство определяется как побитовое равенство.Класс ValueType поддерживает типы значений.

Таким образом, для ссылочных типов, если они не переопределяют Equals, сравнивается ссылка - т. Е. «Относится ли это к одному и тому же объекту».Для типов значений сравнивается все значение.

...