Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта генерация кода применяется для:
- C#
Что: Позволяет создавать методы Equals и GetHashCode .
Когда: Создайте эти переопределения при наличии типа, который следует сравнить с одним или несколькими полями, а не по расположению объекта в памяти.
Почему:
Если вы реализуете тип значения, следует переопределить метод Equals . При этом можно повысить производительность по умолчанию метода Equals в ValueType.
Если вы реализуете ссылочный тип, рекомендуется переопределить метод Equals , если тип выглядит как базовый тип, например Point, String, BigNumber и т. д.
Переопределите метод GetHashCode , чтобы разрешить тип работать правильно в хэш-таблице. Дополнительные рекомендации по операторам равенства.
Инструкция
Поместите курсор в строку объявления типа.
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }Код должен выглядеть следующим образом:
Подсказка
Не дважды щелкните имя типа, а параметр меню не будет доступен. Просто поместите курсор в строку.
Затем выберите одно из следующих действий:
Нажмите клавишу Ctrl+, чтобы открыть меню Быстрые действия и рефакторинги.
Щелкните правой кнопкой мыши и выберите меню «Быстрые действия и рефакторинг».
Щелкните
, который отображается в левом поле.
В раскрывающемся меню выберите "Создать равные( объект) или "Создать равно" и GetHashCode.
В диалоговом окне "Выбор элементов" выберите элементы, для которого нужно создать методы:
Подсказка
Вы также можете создать операторы из этого диалогового окна с помощью флажка в нижней части диалогового окна.
EqualsМетодыGetHashCodeсоздаются с помощью реализаций по умолчанию, как показано в следующем коде:public class ImaginaryNumber : IEquatable<ImaginaryNumber> { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } public override bool Equals(object obj) { return Equals(obj as ImaginaryNumber); } public bool Equals(ImaginaryNumber other) { return other != null && RealNumber == other.RealNumber && ImaginaryUnit == other.ImaginaryUnit; } public override int GetHashCode() { return HashCode.Combine(RealNumber, ImaginaryUnit); } }Код должен выглядеть следующим образом: