内部与私人访问修饰符

时间:2010-09-28 13:54:34

标签: c# .net private access-modifiers internal

C#中的internalprivate访问修饰符之间有什么区别?

7 个答案:

答案 0 :(得分:486)

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

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

答案 1 :(得分:194)

在下面找到解释。您可以查看此链接了解更多详情 - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

私有: - 私人成员只能在自己的类型(自有类)中访问。

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

enter image description here

参考:

dotnetbull - what is access modifier in c#

答案 2 :(得分:67)

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

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

外部(非嵌套)类不能声明为private,因为没有包含使其成为私有的范围。

要回答您忘记提出的问题,protected成员就像private成员,但在继承声明类型的所有类中也可见。 (但仅限于至少表达当前类的类型)

答案 3 :(得分:6)

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

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

答案 4 :(得分:6)

私人 - 类/范围/结构中的封装'。

内部 - 程序集中的封装。

答案 5 :(得分:3)

内部将允许您在多个业务逻辑类之间引用数据访问静态类(用于线程安全),而不是订阅它们以在连接池中继承该类/跳过彼此,并最终避免允许DAL课程,以促进公共级别的访问。这在设计和最佳实践方面有无数的支持。

实体框架充分利用了这种类型的访问

答案 6 :(得分:0)

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

在同一课程中可以访问私人成员

初学者示例

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

  • 在Project2和Project1中可以访问用Project2编写的公共方法
  • 用Project2编写的内部方法只能在Project2中访问,而不能在Project1中访问
  • 用Project2的class1编写的
  • private方法仅可用于同一类。在Project 2的其他类别中,不在Project 1中,都将无法访问它。