封装字段重构 (C#)
当字段为 public 时,其他对象可以直接访问该字段并对其进行修改,而不会被拥有该字段的对象检测到。 通过使用属性封装该字段,可以禁止对字段的直接访问。
为了创建新属性,**“封装字段”**操作将为要封装为 private 的字段更改访问修饰符,然后为该字段生成 get 和 set 访问器。 在某些情况下,将只生成 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、Ctrl+E 来显示**“封装字段”**对话框。
还可以右击光标,指向**“重构”,然后单击“封装字段”以显示“封装字段”**对话框。
指定设置。
按 Enter,或单击**“确定”**按钮。
如果选择了**“预览引用更改”选项,则将打开“预览引用更改”窗口。 单击“应用”**按钮。
源文件中将显示下面的 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);
备注
仅当将光标与字段声明置于同一行时,才可以执行**“封装字段”**操作。
对于声明多个字段的声明,**“封装字段”**使用逗号作为字段之间的边界,并对与光标位于同一行且距离光标最近的某个字段启动重构。 也可以通过在声明中选择该字段的名称来指定要封装的字段。
此重构操作生成的代码将由封装字段代码段功能来建模。 代码段是可修改的。 有关更多信息,请参见 代码段。