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

时间:2016-12-08 19:19:58

标签: c# properties set readonly

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

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

    private string appPath {
        get;
    }
    //...............
}

3 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:1)

可以从您正在执行的构造函数中设置只读属性。

答案 2 :(得分:0)

您可能希望将其更改为

private const string appPath = "something";