封裝欄位重構 (C#)
[封裝欄位] (Encapsulate Field) 重構作業可讓您從現有欄位快速建立屬性,然後以新屬性的參考順利地更新程式碼。
當欄位為 public (公用) 時,可以直接存取該欄位的其他物件,都能在擁有該欄位的物件無法偵測到的情況下修改該欄位。 藉由使用屬性來封裝該欄位,您就可以禁止直接存取該欄位。
為了建立新屬性,[封裝欄位] 作業會變更您要封裝為 private (私用) 欄位的存取修飾詞 (Modifier),然後產生該欄位的 get 和 set 存取子 (Accessor)。 在某些情況下,例如當欄位宣告為唯讀時,只會產生 get 存取子。
重構引擎會參考 [封裝欄位 ] 對話方塊中 [更新參考] 區段裡指定的新屬性來更新您的程式碼。
若要從欄位建立屬性
建立名為 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); } }
在程式碼編輯器,將游標放在宣告中,在您想要結合的欄位名稱。 在下面的範例中,將游標放在 width 這個字上:
public int width, height;
按一下 [重構] 功能表上的 [封裝欄位]。
[封裝欄位] 對話方塊隨即出現。
您也可以輸入鍵盤快速鍵 CTRL+R、E,以顯示 [封裝欄位] 對話方塊。
您也可以按一下滑鼠右鍵,指向 [重構],然後按一下 [封裝欄位] 顯示 [封裝欄位] 對話方塊。
指定設定。
按 ENTER 鍵,或是按一下 [確定] 按鈕。
如果您選取了 [預覽參考變更] 選項,會開啟預覽參考變更視窗。 按一下 [套用] 按鈕。
您的原始程式檔 (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);
備註
只有當游標置於與欄位宣告的相同一行時,才能進行 [封裝欄位] 作業。
對於宣告多個欄位的宣告,[封裝欄位] 會使用逗號 (,) 做為欄位之間的界限,並會在最接近游標的欄位和游標的同一行上起始重構。 您也可以在宣告中選取欄位名稱,藉此指定要進行封裝的欄位。
封裝欄位程式碼片段功能會將重構作業所產生的程式碼模型化。 程式碼片段是可以修改的。 如需詳細資訊,請參閱 程式碼片段。