C Sharp 中的“friend”关键字相当于什么?

如何使用“内部”关键字?

我读到“internal”关键字是 C# 中“friend”的替代品。

我在我的 C# 项目中使用一个 DLL,我拥有该项目的源代码,但我不想修改现有代码。我继承了该类,并且可以以任何我想要的方式使用我继承的类。问题是父类中的大部分代码都有受保护的方法。使用朋友是否可以以某种方式访问​​或调用这些受保护的方法?

有帮助吗?

解决方案

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

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

您可以使用第一个,就像使用其他任何一个一样 访问修饰符 例如 private. 。以机智:

internal class MyClass {
    ...
}

您可以按如下方式使用第二个:

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

这两者都可以正确地视为等同于 friend 在 C# 中。

方法有 protected 已经可供派生类使用。

其他提示

没有,“内部”是不一样的“朋友”(至少C ++“朋友”)

朋友指定这个类是仅由一个,特定类访问。结果 内部指定这个类是通过组件中的任何类访问。

1)内部 是VB.NET '朋友' 的关键字的C#equivelant,因为你已经猜到(而不是替代)

2)用法如下

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

3),基本上,是规定的类/功能/ vairiable /标记为内部属性的可访问性是就好像它是公共到它被编译在大会接入改性剂和私人的任何其他组件

您的子类将能够访问你继承类的保护成员。

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

内部是朋友的等价物。受保护的方法是只在同一类内或从继承者可用。如果你想从继承暴露受保护的方法,你可以在公共的方法将它们包装。

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