internal
和private
访问修饰符有什么区别?internal
和private
访问修饰符有什么区别?internal 用于程序集范围(即仅可从相同的 .exe 或 .dll 文件中的代码访问)。
private 用于类范围(即仅可从相同类中的代码访问)。
以下是解释的内容。您可以通过以下链接查看更多详细信息 - http://web.archive.org/web/20230209015322/https://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
私有(Private):- 私有成员只能在自己的类型(自己的类)中访问。
内部(Internal):- 内部成员只能在程序集中通过继承(派生类型)或者类的实例中访问。
参考:
protected internal
理解为protected OR internal
可能会有所帮助。 - chessofnerdprotected internal
的true|false|false|false进行AND
运算。但这并不直观。相反,它是true|true|true|false,就像被OR'd
一样。 - ferrprivate protected
并不是很直观。详情请参见:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/private-protected - Joe SewellWith Type
指的是从类的实例化对象中访问成员,这发生在类外部。请注意,对于私有和受保护的成员,With Type
的值为 X。 - Matthew Eskolin内部成员只能在程序集内访问(仅在同一项目中可访问)。
私有成员只能在同一类内被访问。
解决方案中有两个项目(Project1,Project2),其中Project1引用了Project2。
private - 在类、作用域、结构等中的封装。
internal - 在程序集中的封装。
私有成员只能在声明它们的类或结构体内部访问。
内部类型或成员只能在同一程序集中的文件内访问。
Internal关键字允许多个业务逻辑类之间引用Data Access静态类(以保证线程安全),而不会将它们订阅到继承该类/在连接池中相互干扰,最终避免DAL类在公共级别上提升访问权限。这在设计和最佳实践中有无数的支持。
Entity Framework很好地利用了这种访问方式。