mic*_*ico 18
右键单击字段声明,菜单Refactor - > Encapsulate字段,然后继续
int n;
Run Code Online (Sandbox Code Playgroud)
至
int n;
public int N
{
get { return n; }
set { n = value; }
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*son 11
如果您使用的是C#3.0或更高版本(基本上是VisualStudio 2008),则可以使用自动属性.虽然这不是你要求的,但它应该(希望)能够做到这一点.
而不是写:
private string m_Name;
public string Name
{
get { return m_Name; }
set { m_Name = value; }
}
Run Code Online (Sandbox Code Playgroud)
你可以写:
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将为您提供快速,"愚蠢"(即没有检索或分配逻辑)属性,可以在您的课程中使用.如果您以后发现需要检索和赋值逻辑,只需返回并执行完整的属性声明语法,您就不必更改任何调用代码.
唯一真正的区别在于,您必须使用该属性来获取类中的值,因为生成了后备变量并且编译时间并且代码不可用.
LBu*_*kin 10
您在寻找代码重构工具吗?如果是这样,请查看ReSharper.它提供了一个易于将简单的字段支持属性转换为自动属性,反之亦然.
如果您只是不想编写自定义字段支持的属性,则可以使用自动属性,例如,如下所示:
public string MyProperty { get; set; } // generates an auto-property
Run Code Online (Sandbox Code Playgroud)
这相当于:
private string m_MyProperty;
public string MyProperty
{
get { return m_MyProperty; }
set { m_MyProperty = value; }
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以使setter和getter的可访问性有所不同:
public string MyProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)
如果您确实选择使用自动属性,请注意您无法访问基础字段,也不能只为一部分提供实现(只是getter或只是setter).但是,您可以将属性设为虚拟.