当前位置: 首页 > 编程语言 > C#

C#-在此示例中改进了属性封装?分享

时间:2023-04-11 01:10:45 C#

C#-在此示例中改进了属性封装?我知道错误“集合访问器的可访问性修饰符必须比属性或索引器的可访问性修饰符更具限制性”。我也知道解决方法。只是不是在这个非常具体的案例中。考虑这个例子:internalvirtualboolIsFocused{get{returnisFocused;}protectedset{isFocused=value;}}privateboolisFocused;它显示错误。我只是不知道为什么。“保护”怎么不比里面更容易接近呢?这个问题的解决方案是什么?我尝试更改为“内部保护”,但没有成功。protected允许继承类访问它,而internal则不允许-internal限制对程序集本身的访问-有关事实,请参阅http://msdn.microsoft.com/en-us/library/7c5ka91b%28v=vs.80%29.aspx证书,受保护比内部更容易访问。回想一下,internal意味着“在此程序集之外不可见”(除非通过InternalsVisibleTo访问,这使得internal看起来是公共的),而protected意味着对所有子类可见。@bobbymcr在他的分析中是绝对正确的。解决方案是将属性标记为内部保护。在C#中,这意味着派生类和当前程序集中的所有类都可以访问它。如果internalprotectedasaccessor方法-这意味着派生类可以访问它。但是整个属性不是,这会导致错误。如果您将整个属性标记为内部保护和访问方法-一切都很好。internalprotectedvirtualboolIsFocused{get{returnisFocused;}protectedset{isFocused=value;}}privateboolisFocused;另一种选择是引入将在setter中调用的受保护方法。然后,您可以将整个属性标记为内部属性,并只允许重写该方法。以上是C#学习教程:C#-Improvedpropertyencapsulationinthisexample?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: