为什么C#允许方法/成员在类是内部时公开

Rav*_*sha 8 c# oop

我有一个我标记为内部的类,我将字段和方法标记为公共.它编译时没有错误或警告.是否有任何特定的需要将方法作为public和class作为内部(除非它们是从接口或类实现的)?

Joe*_*Joe 8

它没有任何不利影响,也意味着如果您决定公开该类型,则无需更改成员的可访问性.

基本上对于会员:

  • public表示任何可以看到Type的人都可以看到该成员.

  • internal表示该成员仅在当前程序集中可见,即使Type是公开可见的.

所以你的选择将基于哪一个是最合适的.一般来说,将成员公开是最合适的(即任何可以看到Type的人都可以看到,即Type的公共API的一部分).您可以将成员设置为内部,原因与您在公共类中创建内部成员的原因相同 - 通常是辅助成员,只应对同一程序集中的"friend"类可见,并且不构成公共API的一部分.

此外,内部类型可以从公共类型派生,因此可以继承和覆盖公共成员.允许被覆盖的公众成员,而不是新公共成员是否有意义?


Adr*_*der 5

标记为公共方法内部的类将允许同一组件中的其他类引用这些方法.

内部(C#参考)

内部访问的一个常见用途是基于组件的开发,因为它使一组组件能够以私有方式进行协作,而不会暴露给其他应用程序代码.例如,用于构建图形用户界面的框架可以提供使用具有内部访问权限的成员进行协作的Control和Form类.由于这些成员是内部成员,因此它们不会暴露给使用该框架的代码.

引用具有内部访问权限的类型或成员在组件定义之外是错误的.

编辑

C#内部方法的范围?

您可能需要公共类上的方法,该方法可以由程序集中的其他类调用,但不能由程序集的客户端调用.