c#中的内部访问修饰符和私有访问修饰符有什么区别?
当前回答
内部成员对声明它们的程序集中的所有代码都可见。 (以及使用[InternalsVisibleTo]属性引用的其他程序集)
私有成员仅对声明类可见。(包括嵌套类)
外部(非嵌套)类不能声明为私有的,因为没有包含作用域可以使其为私有的。
为了回答您忘记问的问题,受保护的成员就像私有成员一样,但在继承声明类型的所有类中也是可见的。(但只在至少是当前类类型的表达式上)
其他回答
下面是解释。你可以点击这个链接了解更多细节 http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Private:—私有成员只能在自己的类型(own类)中访问。
Internal:内部成员只能在程序集中通过继承(其派生类型)或通过类的实例访问。
参考:
Dotnetbull - c#中的访问修饰符
Internal将允许您在多个业务逻辑类之间引用数据访问静态类(为了线程安全),同时不订阅它们以在连接池中相互继承该类/行程,并最终避免允许DAL类在公共级别上促进访问。这在设计和最佳实践中有无数的支持。
实体框架很好地利用了这种类型的访问
私有成员只能在声明它们的类或结构体内部访问。
内部类型或成员只能在同一程序集中的文件中访问
Internal用于程序集范围(即只能从相同的。exe或。dll中的代码中访问)
Private用于类范围(即只能从同一类中的代码中访问)。
内部成员对声明它们的程序集中的所有代码都可见。 (以及使用[InternalsVisibleTo]属性引用的其他程序集)
私有成员仅对声明类可见。(包括嵌套类)
外部(非嵌套)类不能声明为私有的,因为没有包含作用域可以使其为私有的。
为了回答您忘记问的问题,受保护的成员就像私有成员一样,但在继承声明类型的所有类中也是可见的。(但只在至少是当前类类型的表达式上)
推荐文章
- 防止在ASP中缓存。NET MVC中使用属性的特定操作
- 转换为值类型'Int32'失败,因为物化值为空
- c#中有任何连接字符串解析器吗?
- 在Linq中转换int到字符串到实体的问题
- 是否可以动态编译和执行c#代码片段?
- 创建自定义MSBuild任务时,如何从c#代码获取当前项目目录?
- MSBuild路径
- c#和Java的主要区别是什么?
- 在c#中创建一个特定时区的DateTime
- .NET中的属性是什么?
- csproj文件中的“Service Include”是干什么用的?
- 如何使用try catch进行异常处理是最佳实践
- 替换字符串中第一次出现的模式
- .NET中字节的字面后缀?
- 如何处理AccessViolationException