此代碼產生適用於:
- C#
什麼: 可讓您產生 Equals 和 GetHashCode 方法。
什麼時候: 當您有一或多個字段應該比較的類型,而不是記憶體中的物件位置時,產生這些覆寫。
為什麼:
如果您要實作實作實值類型,您應該考慮覆寫 Equals 方法。 當您這樣做時,您可以透過 ValueType 上 Equals 方法的預設實作來提升效能。
如果您要實作參考類型,如果您的類型看起來像基底類型,例如 Point、String、BigNumber 等等,您應該考慮覆寫 Equals 方法。
覆寫 GetHashCode 方法,以允許類型在哈希表中正確運作。 深入瞭解 相等運算子的指引。
操作說明
將游標放在類型宣告行的某處。
public class ImaginaryNumber { public double RealNumber { get; set; } public double ImaginaryUnit { get; set; } }您的程式代碼看起來應該類似下列螢幕快照:
小提示
請勿按兩下選取類型名稱,或無法使用功能表選項。 只要將游標放在線條的某處即可。
接下來,選擇下列其中一個動作:
按 Ctrl+. 鍵觸發 Quick Actions and Refactorings 功能表。
右鍵單擊並選擇 Quick Actions and Refactorings 功能表。
按兩下
的螢幕快照。
在下拉功能表中,選取 [ 產生等於] 或 [ 產生等號] 和 [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); } }您的程式代碼看起來應該類似下列螢幕快照: