Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
В этом разделе рассматриваются перегрузки операторов равенства и обозначаются операторы operator== и operator!= как операторы равенства.
❌ НЕ перегружайте один из операторов равенства, оставляя другой непрегруженным.
✔️ Убедитесь, что Object.Equals и операторы равенства имеют точно ту же семантику и аналогичные характеристики производительности.
Это часто означает, что Object.Equals необходимо переопределить при перегрузке операторов равенства.
❌ Избегайте выброса исключений из операторов равенства.
Например, возвращает значение false, если один из аргументов имеет значение NULL вместо того, чтобы вызывать NullReferenceException.
Операторы равенства для типов значений
✔️ Перегружайте операторы равенства для типов данных, если равенство имеет смысл.
На большинстве языков программирования реализация типов значений operator== по умолчанию отсутствует.
Операторы равенства для ссылочных типов
❌ Избегайте перегрузки операторов равенства для изменяемых ссылочных типов.
Многие языки имеют встроенные операторы равенства для ссылочных типов. Встроенные операторы обычно реализуют равенство ссылок, и многие разработчики удивлены, когда поведение по умолчанию изменяется на равенство значений.
Эта проблема устранена для неизменяемых ссылочных типов, так как неизменяемость делает его гораздо труднее заметить разницу между равенством ссылок и равенством значений.
❌ Избегайте перегрузки операторов равенства на ссылочных типах, если реализация будет значительно медленнее, чем равенство ссылок.
© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.
Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.