3 c# properties
我一直在审查PRISM工具包,我发现很多例子,他们用空的getter/setter声明一个公共属性,但他们仍然可以设置实例化类的属性.怎么/为什么这可能?
public class ShellPresenter
{
public ShellPresenter(IShellView view)
{
View = view;
}
public IShellView View { get; private set; }
}
//calling code
ShellPresenter sp = new ShellPresenter();
//Why is this allowed?
sp.View = someView;
Run Code Online (Sandbox Code Playgroud)
Sam*_*eff 11
这是C#3.0中的一项新功能.
http://msdn.microsoft.com/en-us/library/bb384054.aspx
在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁.
他们正在使用C#自动属性.这是一种方便,编译器为您生成支持字段.private set表示该属性是从类外部读取的.因此,如果sp.View = someView;在类之外使用,则会导致编译器错误.