在 Visual Studio 中產生 Equals 和 GetHashCode 方法覆寫

此代碼產生適用於:

  • C#

什麼: 可讓您產生 EqualsGetHashCode 方法。

什麼時候: 當您有一或多個字段應該比較的類型,而不是記憶體中的物件位置時,產生這些覆寫。

為什麼:

  • 如果您要實作實作實值類型,您應該考慮覆寫 Equals 方法。 當您這樣做時,您可以透過 ValueType 上 Equals 方法的預設實作來提升效能。

  • 如果您要實作參考類型,如果您的類型看起來像基底類型,例如 Point、String、BigNumber 等等,您應該考慮覆寫 Equals 方法。

  • 覆寫 GetHashCode 方法,以允許類型在哈希表中正確運作。 深入瞭解 相等運算子的指引。

操作說明

  1. 將游標放在類型宣告行的某處。

    public class ImaginaryNumber
    {
        public double RealNumber { get; set; }
        public double ImaginaryUnit { get; set; }
    }
    

    您的程式代碼看起來應該類似下列螢幕快照:

    要套用所產生方法之已醒目提示程式代碼的螢幕快照

    小提示

    請勿按兩下選取類型名稱,或無法使用功能表選項。 只要將游標放在線條的某處即可。

  2. 接下來,選擇下列其中一個動作:

    • Ctrl+. 鍵觸發 Quick Actions and Refactorings 功能表。

    • 右鍵單擊並選擇 Quick Actions and Refactorings 功能表。

    • 按兩下 Visual Studio 圖示中顯示在左邊界之快速動作螺絲起子圖示 的螢幕快照。

  3. 在下拉功能表中,選取 [ 產生等於] 或 [ 產生等號] 和 [GetHashCode]。

    [產生覆寫] 下拉功能表的螢幕快照

  4. 在 [ 挑選成員 ] 對話框中,選取您要為下列項目產生方法的成員:

    產生覆寫對話框

    小提示

    您也可以選擇使用對話框底部附近的複選框,從這個對話框產生運算符。

    EqualsGetHashCode 方法會以預設實作產生,如下列程式代碼所示:

    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);
        }
    }
    

    您的程式代碼看起來應該類似下列螢幕快照:

    所產生方法結果的螢幕快照

另請參閱