有人能解释一下c#中受保护的内部修饰符和受保护的内部修饰符的区别吗?看起来它们的行为是一样的。
当前回答
受保护的内部最佳套件:当您希望在来自另一个程序集的派生类中使用成员或类型,同时只想在父程序集中使用该成员或类型,而不从声明它的类派生时。 此外,如果您只想使用不从其他类派生的成员或类型,则在同一程序集中只能使用internal。
其他回答
在实践中,关于方法:
Protected -继承类可访问,否则为私有。
内部-仅对程序集中的类是公共的,否则为私有的。
Protected internal -意味着Protected或internal -方法可以被继承的类和程序集中的任何类访问。
Protected可以被任何程序集的任何子类使用。
Protected internal是指受保护的所有内容,再加上同一程序集中的任何内容都可以访问它。
重要的是,它并不意味着“同一程序集中的子类”——它是两者的并集,而不是交集。
我已经把这些术语的定义读得很清楚了。
Protected:访问限制在类定义内以及从该类继承的任何类内。类型或成员只能通过同一类或结构中的代码或从该类派生的类中的代码访问。
内部:访问仅限于当前项目程序集中定义的类。类型或成员只能由同一类中的代码访问。
Protected-Internal:访问权限仅限于从包含类派生的当前程序集或类型。
下表显示了其中的差异。Protected internal与Protected相同,只是它还允许来自同一程序集中其他类的访问。
受保护的内部最佳套件:当您希望在来自另一个程序集的派生类中使用成员或类型,同时只想在父程序集中使用该成员或类型,而不从声明它的类派生时。 此外,如果您只想使用不从其他类派生的成员或类型,则在同一程序集中只能使用internal。
推荐文章
- 如何在。net中创建和使用资源
- 为什么Path。以Path.DirectorySeparatorChar开头的文件名合并不正确?
- 如何在c#中获得正确的时间戳
- Linq选择列表中存在的对象(A,B,C)
- c# .NET中的App.config是什么?如何使用它?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 我如何提高ASP。NET MVC应用程序性能?
- 更好的方法将对象转换为int类型
- 我可以将c#字符串值转换为转义字符串文字吗?
- 在c#中转换char到int
- c#中朋友的对等物是什么?
- 关键字使用virtual+override vs. new
- 无法解析类型为“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务
- 在ASP中选择Tag Helper。NET Core MVC