.net 内部对比私有访问修改器

ia2d9nvy  于 2023-05-08  发布在  .NET
关注(0)|答案(7)|浏览(171)

C#中的internalprivate访问修饰符有什么区别?

wsxa1bj1

wsxa1bj11#

internal用于程序集范围(即只能从同一.exe或.dll中的代码访问)
private用于类作用域(即只能从同一类中的代码访问)。

t30tvxxf

t30tvxxf2#

在下面找到解释。您可以查看此链接了解更多详情-http://web.archive.org/web/20230209015322/https://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

Private:-私有成员只能在自己的类型(Own类)中访问。
内部:-内部成员只能在程序集中通过继承(其派生类型)或类的示例访问。

参考:

∮ ∮ ∮ ∮

hujrc8aj

hujrc8aj3#

internal成员对声明它们的程序集中的所有代码可见。
(And使用[InternalsVisibleTo] attribute引用的其他程序集)
private成员仅对声明类可见。(包括嵌套类)
外部(非嵌套)类不能声明为private,因为没有包含作用域使其私有。
为了回答您忘记问的问题,protected成员类似于private成员,但在继承声明类型的所有类中也是可见的。(但仅在至少是当前类的类型的表达式上)

g6baxovj

g6baxovj4#

Private成员只能在声明它们的类或结构体中访问。
内部类型或成员只能在同一程序集中的文件内访问

wh6knrhe

wh6knrhe5#

private-封装在class/scope/struct中。
internal-程序集中的封装。

neskvpey

neskvpey6#

内部成员可在程序集中访问(仅可在同一项目中访问)
私有成员可以在同一个类中访问

初学者示例

解决方案中有两个项目(Project1、Project2),Project1引用Project2。

  • 在Project2中编写的公共方法将在Project2和Project1中可访问
  • 在Project2中编写的内部方法只能在Project2中访问,而不能在Project1中访问
  • 在Project2的class1中编写的私有方法只能由同一个类访问。它在项目2的其他类中不可访问,在项目1中不可访问。
zpjtge22

zpjtge227#

Internal将允许您在多个业务逻辑类之间引用Data Access静态类(用于线程安全),同时不订阅它们以继承该类/在连接池中相互访问,并最终避免允许DAL类在公共级别提升访问。这在设计和最佳实践中有无数的支持。
EntityFramework很好地利用了这种类型的访问

相关问题