C#内部与VBNET朋友
-
04-10-2019 - |
题
如此问题: 什么是朋友的c#?, ,我个人会回答“内部”,就像JA在答案中所做的一样!但是,乔恩·斯基特(Jon Skeet)说,C#中的VB朋友没有直接等效。如果乔恩·斯基特(Jon Skeet)这样说,我不会说否则! ; p
我想知道关键字如何 内部的 (c#)不等同于 朋友 (vbnet)各自的定义是:
这 朋友(视觉基本) 声明声明中的关键字指定可以从同一组件内的元素访问,但不能从组件外部访问。 [...
内部的: :访问仅限于当前组件。
据我了解,这些定义对我来说意味着同样的意义。
然后,分别在VB.NET中进行编码时,我使用 朋友 关键字可以指定只有在声明其声明的程序集中才能访问类或属性。在C#中相同,我使用 内部的 指定相同的关键字。
从这个角度来看,我在做什么或有什么问题?
我没有得到什么改进?
有人可以解释什么朋友和内部不是直接等价的?
事先感谢您的任何答案!
解决方案
我说过没有直接等同的 C ++ “朋友”概念。那与vb.net不同 Friend
概念,确实等同于 internal
在C#中。
上下文很重要 - 不要假设相同的单词在所有语言中都意味着完全相同的东西...“ static”是一个经典的示例:)
其他提示
乔恩(原始)答案清楚地表明他指的是C/C ++ friend
关键字,该关键字可以授予私人访问其他类的访问。 C#中没有直接等价的,但是有一种方法可以扩展 internal
到另一个组件,主要用于测试。
据我了解,VB.NET Friend
与C#相同 internal
.
(我写了上面的书,就像乔恩在这里添加了答案一样。)
比较.NET语言时,VB friend
等于C#的S internal
. 。意思是,只有在同一项目/组件中可以访问任何标记的内容。它可以与 protected
为了更好地控制可见性。
这 InternalsVisibleTo
属性可用于测试目的;尽管有名字,但它与C#一样适用于VB。应该注意的是,VB不支持使用 InternalsVisibleTo
直到.NET 4。
在托管代码中,C ++朋友关键字的粗略等效。尽管它在组装级别上工作,而不是班级级别。您可以使用 [InternalsVisibleTo]
属性.