C#属性:为什么这样做?

gme*_*s29 1 c# properties set readonly

也许在最新版本的C#中我错过了一些东西,但对我来说这个代码应该不起作用了.

public class FileManip {
    public FileManip(string path) {
        appPath = path;
    }

    private string appPath {
        get;
    }
    //...............
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 8

当属性具有get实现时,您有一个不允许写入的属性:

public class FileManip {
    public FileManip(string path) {
        AppPath = path;   // <<===== ERROR
    }
    private string AppPath {
        get { return @"c:\temp\"; }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当你{ get; }没有实现时,它就是一个所谓的只读属性.它已在C#6中添加.您只能从构造函数中写入它.代码的所有其他部分都以只读方式访问此属性.