为什么允许设置一个不在C#中设置任何内容的属性?

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及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁.


Rod*_*man 8

他们正在使用C#自动属性.这是一种方便,编译器为您生成支持字段.private set表示该属性是从类外部读取的.因此,如果sp.View = someView;在类之外使用,则会导致编译器错误.