C#中的internal
和private
访问修饰符之间有什么区别?
答案 0 :(得分:486)
内部适用于程序集范围(即只能从同一.exe或.dll中的代码访问)
私有用于类范围(即只能从同一类中的代码访问)。
答案 1 :(得分:194)
在下面找到解释。您可以查看此链接了解更多详情 - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
私有: - 私人成员只能在自己的类型(自有类)中访问。
内部: - 内部成员只能通过继承(其派生类型)或类实例在程序集中访问。
参考:
答案 2 :(得分:67)
internal
成员对于声明它们的程序集中的所有代码都是可见的
(以及使用[InternalsVisibleTo]
attribute引用的其他程序集)
private
成员仅对声明类可见。 (包括嵌套类)
外部(非嵌套)类不能声明为private
,因为没有包含使其成为私有的范围。
要回答您忘记提出的问题,protected
成员就像private
成员,但在继承声明类型的所有类中也可见。 (但仅限于至少表达当前类的类型)
答案 3 :(得分:6)
私有成员只能在类的主体或声明它们的结构体中访问。
内部类型或成员只能在同一程序集中的文件中访问
答案 4 :(得分:6)
私人 - 类/范围/结构中的封装'。
内部 - 程序集中的封装。
答案 5 :(得分:3)
内部将允许您在多个业务逻辑类之间引用数据访问静态类(用于线程安全),而不是订阅它们以在连接池中继承该类/跳过彼此,并最终避免允许DAL课程,以促进公共级别的访问。这在设计和最佳实践方面有无数的支持。
实体框架充分利用了这种类型的访问
答案 6 :(得分:0)
内部成员可以在程序集中访问(仅在同一项目中可以访问)
在同一课程中可以访问私人成员
解决方案中有2个项目(Project1,Project2),而Project1引用了Project2。