Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
To generowanie kodu ma zastosowanie do:
- C#
Co: Umożliwia generowanie metod Equals i GetHashCode .
Kiedy: Wygeneruj te przesłonięcia, gdy masz typ, który ma być porównywany przez co najmniej jedno pole, zamiast przez lokalizację obiektu w pamięci.
Dlaczego:
Jeśli implementujesz typ wartości, rozważ zastąpienie metody Equals . Możesz zwiększyć wydajność w przypadku domyślnej implementacji metody Equals w metodzie ValueType, gdy to zrobisz.
Jeśli implementujesz typ odwołania, rozważ zastąpienie metody Equals , jeśli typ wygląda jak typ podstawowy, taki jak Point, String, BigNumber itd.
Zastąpi metodę GetHashCode , aby umożliwić poprawne działanie typu w tabeli skrótów. Przeczytaj więcej wskazówek dotyczących operatorów równości.
Instrukcja
Umieść kursor gdzieś w wierszu deklaracji typu.
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }
Kod powinien wyglądać podobnie do poniższego zrzutu ekranu:
Wskazówka
Nie klikaj dwukrotnie nazwy typu lub opcja menu nie będzie dostępna. Wystarczy umieścić kursor gdzieś w wierszu.
Następnie wybierz jedną z następujących akcji:
Naciśnij Ctrl+., aby wyzwolić menu Szybkie akcje i refaktoryzacje.
Kliknij prawym przyciskiem myszy i wybierz menu Szybkie akcje i refaktoryzacje .
Kliknij
, która jest wyświetlana na lewym marginesie.
W menu rozwijanym wybierz pozycję Generuj equals(obiekt) lub Generuj równości i GetHashCode.
W oknie dialogowym Wybieranie elementów członkowskich wybierz elementy członkowskie, dla których chcesz wygenerować metody:
Wskazówka
Możesz również wygenerować operatory z tego okna dialogowego, używając pola wyboru w dolnej części okna dialogowego.
Metody
Equals
iGetHashCode
są generowane przy użyciu domyślnych implementacji, jak pokazano w poniższym kodzie: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); } }
Kod powinien wyglądać podobnie do poniższego zrzutu ekranu: