Answers:
内部用于程序集作用域(即只能从同一.exe或.dll中的代码访问)
private用于类范围(即只能从同一类中的代码访问)。
在下面找到说明。您可以检查此链接以获取更多详细信息-http: //www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
私有: -私有成员只能在自己的类型(Own类)内访问。
内部:内部成员只能在程序集中通过继承(其派生类型)或类实例进行访问。
参考:
Protected Internal
提供的访问范围比Protected
。
protected internal
作为protected OR internal
。
With Type
意思
AND
该矩阵为true | false | false | false protected internal
。不直观。相反,它是true | true | true | false就像OR'd
。
private protected
不是很直观,但是C#7.2刚刚添加了“受保护的AND内部”修饰符。有关详细信息:docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/…–
internal
成员在声明它们的程序集中的所有代码中都是可见的。
(以及使用[InternalsVisibleTo]
属性引用的其他程序集)
private
成员仅对声明类可见。(包括嵌套类)
不能声明外部(非嵌套)类private
,因为没有包含它的私有范围。
要回答您忘记提出的问题,protected
成员就像private
成员,但在继承声明类型的所有类中也可见。(但仅在至少具有当前类类型的表达式上)
私有 -类/范围/结构等中的封装。
内部 -封装在程序集中。
私有成员只能在声明其的类的主体或结构内访问。
内部类型或成员只能在同一程序集中的文件中访问
使用Internal,您可以在多个业务逻辑类之间引用一个Data Access静态类(以确保线程安全),而不必让它们在连接池中彼此继承该类/行,并且最终避免允许DAL类在公共一级促进获取。这在设计和最佳实践方面有无数的支持。
实体框架很好地利用了这种访问方式