C# 内部访问修饰符与专用访问修饰符

C# 内部访问修饰符与专用访问修饰符,c#,.net,private,access-modifiers,internal,C#,.net,Private,Access Modifiers,Internal,C#中的内部和私有访问修饰符之间有什么区别?内部成员在程序集中声明的所有代码都可见。 (以及使用引用的其他程序集) private成员仅对声明类可见。(包括嵌套类) 外部(非嵌套)类不能声明为私有的,因为没有使其私有的包含作用域 要回答您忘记问的问题,protected成员类似于private成员,但在继承声明类型的所有类中也可见。(但仅在至少为当前类类型的表达式上)内部用于程序集范围(即,只能从相同.exe或.dll中的代码访问) private用于类作用域(即只能从同一类中的代码访问)。pr

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

内部
成员在程序集中声明的所有代码都可见。
(以及使用引用的其他程序集)

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

外部(非嵌套)类不能声明为私有的,因为没有使其私有的包含作用域


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

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


private用于类作用域(即只能从同一类中的代码访问)。private成员只能在声明它们的类体或结构中访问


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

请参见下面的说明。您可以查看此链接以了解更多详细信息-

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

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

参考资料:


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


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

私有-类/范围/结构等中的封装


内部-封装在程序集中。

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

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

初学者示例 解决方案中有两个项目(Project1、Project2),Project1引用了Project2

  • Project2中编写的公共方法将在Project2和Project1中访问
  • 在Project2中编写的内部方法只能在Project2中访问,但不能在Project1中访问
  • 在Project2的类1中编写的私有方法将只能被同一类访问。它在项目2的其他类别中(项目1除外)都不可访问

相关问题:那么使用这个有什么区别?我仍然不明白:XPrivate只能从类中访问,Internal可以从程序集(VS i.e.dll/exe文件中的项目)中访问;如果我在程序集中的命名空间中将一个类声明为private,而该类是internal,那么在这两种情况下,我都可以在程序集中访问该类,那么private类和internal类之间的区别是什么?或者在类中嵌套类时是否使用了类的私有修饰符和内部修饰符?我添加了特定的项目/程序集作为另一个项目的引用,并且私有和内部修饰符都阻止我访问命名空间中的特定类,因此再次。。。私有类和内部类之间的区别是什么?谢谢,您不能将顶级类声明为private。编译器将阻止您。@NetSkay:如果您在公共类中声明一个私有类,则程序集中的其他类无法访问该类,但如果您将该类声明为内部类,则程序集中的其他类可以访问该类。尽管如此,它们在程序集之外都是不可访问的。如果您来自VB.NET背景,C#的“internal”关键字相当于VB.NET的“Friend”关键字。有趣的是,
受保护的internal
提供了比
受保护的
@Dan更广泛的访问权限,请完全同意。阅读并将
受保护内部
视为
受保护或内部
,可能会有所帮助。
类型
意味着什么?@Dan yeah,我假设它只是一个真值表,
矩阵为true | false | false表示
受保护内部
。不直观。相反,它是真的|真的|真的|假的,好像
。顺便说一句,C#7.2刚刚添加了一个“受保护和内部”修饰符,尽管实际选择的关键字,
受私有保护的
,不是很直观。详情如下: