在C Sharp中,“朋友”关键字相当于什么?

在C Sharp中,“朋友”关键字相当于什么?

如何使用’internal’关键字?

我已经读过’内部’关键字是C#中’朋友’的替代品。

我在我的C#项目中使用了一个DLL,我有源代码,但我不想修改现有的代码。 我inheritance了这个类,我可以以任何我想要的方式使用我inheritance的类。 问题是父类中的大多数代码都有受保护的方法。 以某种方式使用朋友可以访问或调用这些受保护的方法吗?

  1. 您可以使用关键字访问修饰符internal将类型或类型成员声明为只能访问同一程序集中的代码。

  2. 您可以使用System.Rutime.CompilerServices定义的InternalsVisibleToAttribute类将类型声明为只能在同一程序集或指定程序集中的代码访问。

您在使用任何其他访问修饰符(例如private使用第一个。 以机智:

 internal class MyClass { ... } 

您使用第二个如下:

 [assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")] internal class MyVisibleClass { ... } 

这两者都可以被认为是C#中的friend

protected方法已经可用于派生类。

不,“内部”与“朋友”不一样(至少是C ++’朋友’)

friend指定此类只能由ONE,特定类访问。
internal指定程序集中的任何类都可以访问此类。

1) 内部是VB.NET’friend’关键字的C#equivelant,正如您猜到的(而不是替换)

2)使用方法如下

 internal void Function() {} internal Class Classname() {} internal int myInt; internal int MyProperty { get; set; } 

3)它基本上是一个访问修饰符,它规定标记为内部的类/函数/ vairiable / property的可访问性就好像它是编译成汇编的程序集是公共的,并且对任何其他程序集是私有的

您的子类将能够访问您inheritance的类的受保护成员。

您是否希望将这些受保护的成员访问另一个类?

内部相当于朋友。 受保护的方法仅在同一个类或inheritance者中可用。 如果您尝试从inheritance者公开受保护的方法,则可以将它们包装在公共方法中。