【发布时间】:2011-04-18 07:53:01
【问题描述】:
C# 中的internal 和private 访问修饰符有什么区别?
【问题讨论】:
标签: c# .net private access-modifiers internal
C# 中的internal 和private 访问修饰符有什么区别?
【问题讨论】:
标签: c# .net private access-modifiers internal
internal 用于程序集范围(即只能从同一 .exe 或 .dll 中的代码访问)
private 用于类范围(即只能从同一类中的代码访问)。
【讨论】:
在下面找到解释。您可以查看此链接以获取更多详细信息 - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
私有: - 私有成员只能在自己的类型(Own 类)中访问。
内部: - 内部成员只能在程序集中通过继承(其派生类型)或类实例访问。
参考:
【讨论】:
Protected Internal 提供比Protected 更广泛的访问权限。
protected internal asprotected OR internal 可能会有所帮助。
With Type 是什么意思?
AND 该矩阵为真|假|假|假protected internal。不直观。相反,它是 true|true|true|false,就像OR'd。
private protected 不是很直观。详情:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal 成员对声明它们的程序集中的所有代码都是可见的。
(以及使用[InternalsVisibleTo] attribute 引用的其他程序集)
private 成员仅对声明类可见。 (包括嵌套类)
不能将外部(非嵌套)类声明为 private,因为没有将其设为私有的包含范围。
要回答您忘记提出的问题,protected 成员类似于 private 成员,但在继承声明类型的所有类中也可见。 (但仅限于至少当前类的类型的表达式)
【讨论】:
私有成员只能在类的主体或声明它们的结构中访问。
内部类型或成员只能在同一程序集中的文件中访问
【讨论】:
private - 封装在类/范围/结构等'中。
内部 - 封装在程序集中。
【讨论】:
Internal 将允许您在多个业务逻辑类之间引用数据访问静态类(用于线程安全),而不是订阅它们以在连接池中继承该类/相互访问,并最终避免允许一个 DAL 类,以促进公共级别的访问。这在设计和最佳实践方面得到了无数支持。
Entity Framework 很好地利用了这种访问方式
【讨论】:
内部成员可以在程序集中访问(只能在同一个项目中访问)
私有成员可以在同一个类中访问
解决方案中有 2 个项目(Project1、Project2),并且 Project1 具有对 Project2 的引用。
【讨论】: