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";
也许我在最新版本的 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";