【发布时间】:2017-02-02 06:46:37
【问题描述】:
我有课
public class Settings : ProviderSettings {
internal Settings(MyProvider provider) {
this.Provider = provider;
LoadFromConfig();
}
protected override IProvider Provider {
get;
}
}
ProviderSettings 类是:
public abstract class ProviderSettings {
protected abstract IProvider Provider { get; }
}
在 Visual Studio 2015 中,当我面向 .NET 4.0 时没有出现编译错误。我想我应该收到一个编译错误,说“提供程序是只读的,无法设置”。为什么编译器允许这样做?
【问题讨论】:
-
快速问题:您打算如何在没有正文的 getter 中设置属性值?您希望使用 getter 的结果是什么?
-
使用我将在构造函数中设置并使用 getter 返回的支持字段。
-
这样写代码会发生什么?
-
它是这样工作的,但我不小心使用了该属性,并且很惊讶编译器没有对我吐槽。
-
.NET 版本并不意味着 C# 版本。这是 C# 6 的一个特性,VS 2015 中的所有代码都将在该特性下编译。如果您愿意,可以在 .NET 2.0 中使用它。