C#中的internal和private访问修饰符有什么区别?
internal
private
wsxa1bj11#
internal用于程序集范围(即只能从同一.exe或.dll中的代码访问)private用于类作用域(即只能从同一类中的代码访问)。
t30tvxxf2#
在下面找到解释。您可以查看此链接了解更多详情-http://web.archive.org/web/20230209015322/https://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Private:-私有成员只能在自己的类型(Own类)中访问。内部:-内部成员只能在程序集中通过继承(其派生类型)或类的示例访问。
参考:
∮ ∮ ∮ ∮
hujrc8aj3#
internal成员对声明它们的程序集中的所有代码可见。(And使用[InternalsVisibleTo] attribute引用的其他程序集)private成员仅对声明类可见。(包括嵌套类)外部(非嵌套)类不能声明为private,因为没有包含作用域使其私有。为了回答您忘记问的问题,protected成员类似于private成员,但在继承声明类型的所有类中也是可见的。(但仅在至少是当前类的类型的表达式上)
[InternalsVisibleTo]
protected
g6baxovj4#
Private成员只能在声明它们的类或结构体中访问。内部类型或成员只能在同一程序集中的文件内访问
wh6knrhe5#
private-封装在class/scope/struct中。internal-程序集中的封装。
neskvpey6#
内部成员可在程序集中访问(仅可在同一项目中访问)私有成员可以在同一个类中访问
解决方案中有两个项目(Project1、Project2),Project1引用Project2。
zpjtge227#
Internal将允许您在多个业务逻辑类之间引用Data Access静态类(用于线程安全),同时不订阅它们以继承该类/在连接池中相互访问,并最终避免允许DAL类在公共级别提升访问。这在设计和最佳实践中有无数的支持。EntityFramework很好地利用了这种类型的访问
7条答案
按热度按时间wsxa1bj11#
internal用于程序集范围(即只能从同一.exe或.dll中的代码访问)
private用于类作用域(即只能从同一类中的代码访问)。
t30tvxxf2#
在下面找到解释。您可以查看此链接了解更多详情-http://web.archive.org/web/20230209015322/https://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Private:-私有成员只能在自己的类型(Own类)中访问。
内部:-内部成员只能在程序集中通过继承(其派生类型)或类的示例访问。
参考:
∮ ∮ ∮ ∮
hujrc8aj3#
internal
成员对声明它们的程序集中的所有代码可见。(And使用
[InternalsVisibleTo]
attribute引用的其他程序集)private
成员仅对声明类可见。(包括嵌套类)外部(非嵌套)类不能声明为
private
,因为没有包含作用域使其私有。为了回答您忘记问的问题,
protected
成员类似于private
成员,但在继承声明类型的所有类中也是可见的。(但仅在至少是当前类的类型的表达式上)g6baxovj4#
Private成员只能在声明它们的类或结构体中访问。
内部类型或成员只能在同一程序集中的文件内访问
wh6knrhe5#
private-封装在class/scope/struct中。
internal-程序集中的封装。
neskvpey6#
内部成员可在程序集中访问(仅可在同一项目中访问)
私有成员可以在同一个类中访问
初学者示例
解决方案中有两个项目(Project1、Project2),Project1引用Project2。
zpjtge227#
Internal将允许您在多个业务逻辑类之间引用Data Access静态类(用于线程安全),同时不订阅它们以继承该类/在连接池中相互访问,并最终避免允许DAL类在公共级别提升访问。这在设计和最佳实践中有无数的支持。
EntityFramework很好地利用了这种类型的访问