【发布时间】:2011-12-20 15:10:54
【问题描述】:
我有一个公开自动实现属性Enabled的类
Public MustInherit Class TopLevel
Protected Property Enabled() As Boolean
End Class
在继承的类中我无法访问 _Enabled
Public Class SubClass
Inherits TopLevel
Public Function Foo() As string
If Not _Enabled Then Return Nothing '<- This fails
End SUb
End Class
但如果我没有使用自动实现的属性并声明我自己的支持字段如下,则可以从子类访问:
Private _Enabled as Boolean
---- 编辑 ----
abve 行不正确 - 这是不可能的,实际上是 Protected 在允许从子类访问的原始代码中查看 @JonSkeet 答案
---- 编辑----
当然,我可以从子类中访问 Enabled 来解决这个问题,但是有人可以解释为什么会出现这种行为吗?
【问题讨论】:
-
"这可以从子类访问:" 可以从子类访问的私有字段对我来说当然听起来很奇怪。在 C# 中这是不可能的。不确定 VB.net,但如果它允许这样做,我会感到惊讶。
标签: .net vb.net oop class inheritance