如此问题: 什么是朋友的c#?, ,我个人会回答“内部”,就像JA在答案中所做的一样!但是,乔恩·斯基特(Jon Skeet)说,C#中的VB朋友没有直接等效。如果乔恩·斯基特(Jon Skeet)这样说,我不会说否则! ; p

我想知道关键字如何 内部的 (c#)不等同于 朋友 (vbnet)各自的定义是:

朋友vbnet

朋友(视觉基本) 声明声明中的关键字指定可以从同一组件内的元素访问,但不能从组件外部访问。 [...

内部C#

内部的: :访问仅限于当前组件。

据我了解,这些定义对我来说意味着同样的意义。

然后,分别在VB.NET中进行编码时,我使用 朋友 关键字可以指定只有在声明其声明的程序集中才能访问类或属性。在C#中相同,我使用 内部的 指定相同的关键字。

  1. 从这个角度来看,我在做什么或有什么问题?

  2. 我没有得到什么改进?

  3. 有人可以解释什么朋友和内部不是直接等价的?

事先感谢您的任何答案!

有帮助吗?

解决方案

我说过没有直接等同的 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] 属性.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top