c# - "private"和 "protected Internal"有什么区别?

标签 c# .net oop access-modifiers

我只想知道 privateprotected internal 访问说明符之间的实际区别是什么。据我所知

Visible to own class members: private and protected internal YES

Visible to object of other classes: Both NO

Visible to objects of other classes outside the namespace collection: Both NO

Visible to object of child classes outside the namespace collection: Both NO

如果 privateprotected internal 做同样的事情,那么为什么我们需要两者,只需要一个就足够了?

最佳答案

  • protected internal 成员对当前程序集另一个程序集中的派生类中的任何代码可见。用技术术语来说,它是 logical disjunction protectedinternal
  • private 成员仅对同一类中的代码可见。

protected internal 实际上是仅次于 public 的第二个最宽松的访问修饰符。


值得注意的是,protected 可以说比 internal 宽松,因为它允许从您无法控制的代码(即其他组件)。虽然 internal 允许从当前程序集中的所有代码访问,但此代码是您的,您可以控制它!

换句话说,protected(和protected internal)成员是程序集公共(public) API 的一部分(因此应该记录)。 内部成员不是。

关于c# - "private"和 "protected Internal"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10960303/

相关文章:

c# - JAVA中Base64+XOR+UTF8加密,C#中解密

c# - 托管Cuda : IllegalAddress; While Executing a Kernel

c# - ReaderWriterLockSection : A bad idea?

c# - 设计问题 - 用 C# 更新多行 - 关注多次往返性能

c# - 如何在多线程应用程序中安全地填充数据和 Refresh() DataGridView?

c# - 获取带有 url 编码斜线的 URL

c# - UML 帮助 C# 设计原则

java - 如何从对象的 LinkedList 以及所有这些对象的 LinkedList 中删除对象?

performance - Delphi界面性能问题

c# - VS2010项目无法添加本地SQL数据库?