【问题标题】:Need clarification on scope of Friend and Protected Friend需要澄清朋友和受保护朋友的范围
【发布时间】:2011-09-15 05:32:24
【问题描述】:

好的,我对FriendProtected Friend 限定符有些头疼。我到处阅读的信息对我来说就像法律语言。有些人喜欢更简单的法律语言,但仍然是法律语言。

所以,我将尝试在伪VB中提供一个思想框架:

假设我有 AssemblyOne

Public Class classA_One
  Public memberPub
  Private memberPriv
  Protected memberProt
  Friend memberFri
  ProtectedFriend memberProFri
End Class

Public Class classAB_One
  Inherits classA_One
  ...
End Class

Public Class classC_One
  Dim objA_One as classA_One
End Class

其他人(同事)获取我生成的 .dll,引用它,然后创建 AssemblyTwo

Public Class ClassAD_Two
  Inherits classA_One
  ...
End Class

Public Class classE_Two
  Dim objA_One as classA_One
End Class

我想知道classA_One的成员的知名度。我确信:

  • memberPub 随处可见
  • memberPriv 只能在 classA_One 内看到
  • memberProt 可以在 classA_OneclassAB_OneclassAD_One 中看到

我不确定classA_One 的其他两个成员的可见度。

有人可以帮我吗?

TIA。

【问题讨论】:

    标签: .net scope friend protected


    【解决方案1】:

    Friend: 表示程序集中的任何类型都可以访问它,任何引用您的程序集的人都无法看到它。

    Protected Friend: 表示该类型只能由派生成员访问,或者您的程序集类型不是派生的或不是您的程序集的一部分将无法访问它。

    memberFri:classAB_one 和程序集类中的所有其他人都可以访问

    memberProFri:classAB_one 可以访问但不能在 classC_one 中访问

    【讨论】:

    • 恕我直言:classAB_One、classC_One、classAD_Two 可以访问 memberProFri,但 classE_Two 不能访问。
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2015-10-21
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多