C# 属性:为什么这行得通?

C# properties: why does this work?

也许我在最新版本的 C# 中遗漏了一些东西,但对我来说这段代码应该不起作用但它确实起作用了..

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

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

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

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

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

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

您可能希望将其更改为

private const string appPath = "something";