为什么我不能分配一个"受保护的"对朋友的修饰符" VB.NET中的属性?

时间:2015-03-02 23:28:13

标签: vb.net

以下内容无法编译:

MustInherit Class Foo
    Friend Property objects As List(Of Object)
        Get
            Return _objects
        End Get
        Protected Set(value As List(Of Object))
            _objects = value
        End Set
    End Property
    Private Property _objects As New List(Of Object)
End Class

我收到错误消息:Access modifier 'Protected Friend' is not valid. The access modifier of 'Get' and 'Set' should be more restrictive than the property access level.。嗯,它更具限制性。只有同一程序集中Foo的子类才能设置此属性。

为什么不允许这样做?

1 个答案:

答案 0 :(得分:2)

  

嗯,它更具限制性。只有同一程序集中的Foo子类才能设置此属性。

不,那不是真的。 Protected Friend表示程序集中的任何人,以及从类(当前程序集之外)派生的任何人都可以调用该属性。也就是说,它是"或"操作,而不是"和"。 VB.Net没有"受保护和朋友"您正在寻找的访问说明符;只有"受保护或朋友"。