内部与私有访问修饰符

问题描述 投票:0回答:7

C# 中的

internal
private
访问修饰符有什么区别?

c# .net private access-modifiers internal
7个回答
615
投票

internal 适用于程序集范围(即只能从同一 .exe 或 .dll 中的代码访问)

private 用于类范围(即只能从同一类中的代码访问)。


256
投票

请在下面找到解释。您可以查看此链接了解更多详细信息 - http://web.archive.org/web/20230209015322/https://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

私有:私有成员只能在自己的类型(Own class)内访问。

内部:内部成员只能在程序集中通过继承(其派生类型)或通过类的实例访问。

enter image description here

参考: dotnetbull - c# 中的访问修饰符是什么


80
投票

internal
成员对于声明它们的程序集中的所有代码都是可见的。
(以及使用
[InternalsVisibleTo]
属性
引用的其他程序集)

private
成员仅对声明类可见。 (包括嵌套类)

无法声明外部(非嵌套)类

private
,因为没有包含范围可以使其私有。

回答您忘记问的问题,

protected
成员类似于
private
成员,但在继承声明类型的所有类中也可见。 (但仅限于至少当前类类型的表达式)


11
投票

内部成员可以在程序集中访问(只能在同一项目中访问)

私有成员可以在同一个类中访问

初学者示例

解决方案中有 2 个项目(Project1、Project2),并且 Project1 引用了 Project2。

  • 在 Project2 中编写的公共方法将可以在 Project2 和 Project1 中访问
  • Project2 中编写的内部方法只能在 Project2 中访问,而不能在 Project1 中访问
  • Project2 的 class1 中编写的私有方法只能被同一个类访问。它既不能在项目 2 的其他类中访问,也不能在项目 1 中访问。

9
投票

私有成员只能在类主体或声明它们的结构中访问。

内部类型或成员只能在同一程序集中的文件中访问


9
投票

private - 类/作用域/结构体等中的封装。

内部 - 封装在组件中。


4
投票

Internal 将允许您在多个业务逻辑类之间引用数据访问静态类(用于线程安全),同时不订阅它们以在连接池中相互继承该类/行程,并最终避免允许 DAL类,以促进公众层面的访问。 这在设计和最佳实践方面有无数的支持。

实体框架很好地利用了这种类型的访问

© www.soinside.com 2019 - 2024. All rights reserved.