封裝欄位重構 (C#)

[封裝欄位] (Encapsulate Field) 重構作業可讓您從現有欄位快速建立屬性,然後以新屬性的參考順利地更新程式碼。

欄位public (公用) 時,可以直接存取該欄位的其他物件,都能在擁有該欄位的物件無法偵測到的情況下修改該欄位。 藉由使用屬性來封裝該欄位,您就可以禁止直接存取該欄位。

為了建立新屬性,[封裝欄位] 作業會變更您要封裝為 private (私用) 欄位的存取修飾詞 (Modifier),然後產生該欄位的 getset 存取子 (Accessor)。 在某些情況下,例如當欄位宣告為唯讀時,只會產生 get 存取子。

重構引擎會參考 [封裝欄位 ] 對話方塊中 [更新參考] 區段裡指定的新屬性來更新您的程式碼。

若要從欄位建立屬性

  1. 建立名為 EncapsulateFieldExample 的主控台應用程式,再以下列程式碼取代 Program。

    class Square
    {
        // Select the word 'width' and then use Encapsulate Field.
        public int width, height;
    }
    class MainClass
    {
        public static void Main()
        {
            Square mySquare = new Square();
            mySquare.width = 110;
            mySquare.height = 150;
            // Output values for width and height.
            Console.WriteLine("width = {0}", mySquare.width);
            Console.WriteLine("height = {0}", mySquare.height);
        }
    }
    
  2. 程式碼和文字編輯器中,將游標放在宣告中要封裝的欄位名稱上。 在下面的範例中,將游標放在 width 這個字上:

    public int width, height;
    
  3. 按一下 [重構] 功能表上的 [封裝欄位]。

    [封裝欄位] 對話方塊隨即出現。

    您也可以輸入鍵盤快速鍵 CTRL+R、E,以顯示 [封裝欄位] 對話方塊。

    您也可以按一下滑鼠右鍵,指向 [重構],然後按一下 [封裝欄位] 顯示 [封裝欄位] 對話方塊。

  4. 指定設定。

  5. 按 ENTER 鍵,或是按一下 [確定] 按鈕。

  6. 如果您選取了 [預覽參考變更] 選項,會開啟預覽參考變更視窗。 按一下 [套用] 按鈕。

    您的原始程式檔 (Source File) 中會顯示下列 get 和 set 存取子程式碼:

    public int Width
    {
        get { return width; }
        set { width = value; }
    }
    

    Main 方法中的程式碼也會更新為新的 Width 屬性名稱。

    Square mySquare = new Square();
    mySquare.Width = 110;
    mySquare.height = 150;
    // Output values for width and height.
    Console.WriteLine("width = {0}", mySquare.Width);
    

備註

只有當游標置於與欄位宣告的相同一行時,才能進行 [封裝欄位] 作業。

對於宣告多個欄位的宣告,[封裝欄位] 會使用逗號 (,) 做為欄位之間的界限,並會在最接近游標的欄位和游標的同一行上起始重構。 您也可以在宣告中選取欄位名稱,藉此指定要進行封裝的欄位。

封裝欄位程式碼片段功能會將重構作業所產生的程式碼模型化。 程式碼片段是可以修改的。 如需詳細資訊,請參閱HOW TO:管理程式碼片段

請參閱

參考

Visual C# 程式碼片段

概念

重構 (C#)