【发布时间】:2011-11-06 08:12:06
【问题描述】:
根据 MSDN 中的this 页面,事实证明,特定访问器的可访问性必须比索引器和属性本身更具限制性。
现在,我了解它的含义以及其他几种情况(请参阅C# - Improving encapsulation of property in this example?、ERROR: the accessibility modifier of the set accessor must be more restrictive than the property or indexer 和 Why is internal protected not more restrictive than internal? 等问题)。
我不明白的是(这是这里的问题)......有什么理由强制执行吗?
对我来说,这样的事情有什么问题并不明显:
// THIS IS WRONG -- I want this to be set by this class and its derivated
protected MyPropertyType MyProperty
{
get; // this is protected, by the accessibility of the property
protected set; // this is wrong -- why?
}
我认为这种问题的答案可能如此明显,以至于一旦我得到答案我会感到非常愚蠢......但我就是找不到它,我自己也无法得到它。所以……随意开火!
【问题讨论】:
-
我一直认为这是为了避免冗余而故意强加在语法上的功能。
-
这是多余的,你为什么要这个?
-
@FishBasketGordo 可能,但这听起来更像是“可读性”增强,而不是真正的编译器错误级别。
-
@CodeInChaos 这是多余的,但我看不出为什么不允许这样做。此外,这超出了问题的范围,但属性级别可用于指定 setter 和 getter 的默认访问级别,并且它们上的访问修饰符可以设置实际级别。没有冗余,有多种选择。
标签: c# access-modifiers