我使用的是.NET 2.0,因此无法访问自动属性.所以我必须采用以下编码私有变量和公共属性的方式
private string m_hello = null;
public string Hello
{
get{return m_hello;}
set{m_hello = value;}
}
Run Code Online (Sandbox Code Playgroud)
对于上述私有/公共成员的包含类的方法,是否仍然限制对私有变量的访问?我不喜欢我可以使用m_hello或Hello.
谢谢.
Jon*_*eet 10
正如其他人所说,这应该是一个答案......
在针对.NET 2.0时,您仍然可以在C#3中使用自动属性,以及其他一些C#3功能.与(例如)表达式树不同,自动属性不需要CLR或框架中的任何特殊内容,超出[CompilerGenerated]属性(在.NET 2.0中引入).
因此,如果您使用的是VS2008或VS2010,那么使用自动属性是值得的.
虽然它值得,但我也喜欢这种能力.我希望能够在属性中定义变量:
public string Name
{
private string name;
get { return name; }
set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)
我认为这有点像只读私有变量 - 它对客户端没有任何影响,但它有助于在类代码本身内强制执行.
您可以通过继承来完成此任务:
abstract class A // A is not instantiatable due to being abstract
{
private string m_hello = null;
public string Hello
{
get{return m_hello;}
set{m_hello = value;}
}
}
class B : A
{
// B now cannot access the private variable, use B in your code instead of A
}
Run Code Online (Sandbox Code Playgroud)
我并不是说这很好.只是它可以做到.
没有办法做到这一点,除了简单地遵循你自己的约定并做到这一点.你好,如果你真的需要通过你的公共财产.
我不明白为什么你需要/想要这样做,因为它是你的内部类,你是控制代码的人,你可以定义它的使用方式,所以不应该一个问题.