访问说明符protected
和internal protected
在C#之间有什么区别?访问说明符受保护和内部保护在C#之间有什么区别#
回答
Internal
可以在程序集中看到。
Protected
可以通过从定义它的类继承的类中看到。
Protected internal
可以在程序集中看到OR类型派生自它定义的类(包括来自其他程序集的类型)。
参见:http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx
从页面复制:
public Access is not restricted.
protected Access is limited to the containing class or types derived from the containing class.
internal Access is limited to the current assembly.
protected internal Access is limited to the current assembly or types derived from the containing class.
private Access is limited to the containing type.
受保护的内部是什么?不会自己保护做完全相同的事情? – 2010-08-25 06:27:49
@Vince,不,如果它是'protected internal',并且你从另一个程序集中的类中派生出来,那么你将无法访问该方法等等。但是如果它只是被“保护”的话,你会的。 – 2010-08-25 07:00:20
如果我无法访问其他程序集中的方法,那么我可以将其标记为内部而不是受保护的内部。我在这里错过了什么吗? :) – 2010-08-25 10:59:30
internal protected
允许你从哪个不是从同一个对象的派生类在同一装配体中的成员,也可以让保护标准访问您从另一个程序集访问成员。这是内部|保护的,而不是内部&保护(虽然CLR允许后者,C#不)
请参阅http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx。 – 2010-08-17 07:47:49
呃,我在找什么? – 2010-08-17 07:50:01
根据我的理解,受保护的内部没有任何意义,受保护的内部与受保护的受保护的内容相同,并允许您执行完全相同的操作 – 2010-08-30 01:06:35
internal protected
或protected internal
这是相同的装置外部protected
(从当前组件外)和内部public
(来自相同组件内)。
protected
表示只有当前类和从它派生的任何类都有权访问该成员。
internal
表示当前程序集中的任何类都有权访问该成员。
protected internal
实质上是指protected
或internal
;即从当前类派生的所有类(在任何程序集中)都可以访问该成员,就像当前程序集中的所有类一样。这与许多开发人员所期望的相反 - 即protected internal
意味着与protected
和internal
(它不)相同的事情。
internal
- 可由同一程序集(.dll或.exe)中的任何内容显示。protected
- 任何子类都可见,不管它们在哪里。internal protected
- 通过同一程序集内的任何东西可见和任何子类,不管它们在哪里。
杰夫马特菲尔德说“内部进一步降低能见度”的方式使其不清楚。 internal
和protected
只是不同的可见性。将两者放在一起使成员更可见。没有显式访问修饰符的默认可见性尽可能小。添加任何访问修饰符总是会增加可见性。
受保护的内部和受保护访问说明符涉及到继承的概念。
让我们来举例说明受保护的和受保护的内部。
命名空间有两个命名空间命名空间A和命名空间B。
在命名空间的,还有一类命名为CLASSA它由一个命名的方法的接受()使用保护访问说明符。
在命名空间乙,还有另一类,名为CLASSB,它从CLASSA 命名空间甲的继承。
现在有了这个保护符的帮助下,我们可以访问接受()方法命名空间乙的CLASSB。
但使用保护内部访问说明符时的概念是不正确的: 如果接受()CLASSA一个使用保护内部访问符的命名空间的功能,然后CLASSB命名空间B无法访问它,因为accept()函数只能在相同命名空间内的继承类中访问。
为了更好地理解受保护和受保护Internal.it之间的区别,最好先了解Protected和internal之间的区别。
内部变量指的是相同的程序集。不能在不同的程序集中访问。 受保护的变量与私有变量类似,但您可以在相同的程序集或不同的程序集中访问驱动类。 2)采取不同的组装。
using InternalTest;
namespace InternalTest1 ----This namespace in assembly Two
{
Public class A1:B
{
Public void GetInternalValue()
{ return x; //error can't access because this is internal
}
Public void GetProtectedValue()
{
return y;//Work because it's protected
}
}
public class C
{
}
}
从上面的例子就清除您可以访问相同的组件内部而不是在不同的assembly.You可以在同一个装配它的样子说喜欢公共variable.you可以通过创建类的对象赋值
3)受保护的内部在相同的程序集中都具有公共变量的优点。 在你使用像保护变量
受保护
如果类被声明为“受保护” diifrent装配装置,它可以通过在组件中的子类,以及从组件外子类进行访问。
INTERNAL
如果该类被声明为“内部”是指其可通过在组件内的任何类进行访问。
保护的内部
如果该类被声明为“受保护的内部”是指其可以在组件内仅由它们的派生类访问。
- 1. 受保护的内部和内部受保护有区别吗?
- 2. python中的私有公共受保护访问说明符
- 3. C++受保护的访问
- 4. TypeScript - 私有变量和受保护变量之间的区别
- 5. 引入受保护访问说明符的原理
- 6. 访问修饰符和访问说明符之间有什么区别
- 7. 为什么FluentNHibernate.Cfg.Db.Create受到内部保护?
- 8. 保护和私人之间的区别
- 9. 受保护的内部和受保护的行为类似
- 10. 访问说明符和访问修饰符有什么区别?
- 11. 受保护与不受保护的区别
- 12. %s和%c格式说明符之间有什么区别?
- 13. 受保护的和内部的,不受保护的或内部的
- 14. 受保护的访问
- 15. 受保护的内部
- 16. 困惑:内部,保护,受保护的内部
- 17. 平面内存模型和受保护内存模型之间的区别?
- 18. 覆盖受保护的内部受保护!
- 19. C#访问受保护的领域
- 20. 为什么要从外部类访问受保护的成员?
- 21. 如何在python中提供此访问说明符保护?
- 22. 访问受保护或私有属性
- 23. C#的“受保护内部”是指“受保护”*或*“内部”。任何关键字是否意味着“受保护”*和*“内部”?
- 24. 受保护的内部属性vs受保护的属性和Resharper
- 25. Java:格式说明符%x和%h之间有什么区别?
- 26. C#内部getter,带有内部类参数的受保护setter
- 27. DataProtectionProvider构造保护说明
- 28. 私人和受保护的纯虚函数之间是否有区别?
- 29. 作为scanf的格式说明符,%* c%c和%c之间有什么区别?
- 30. 在派生类中使用受保护的说明符
可能的重复[什么是受保护的内部意味着净](http://stackoverflow.com/questions/2651137/what-does-protected-internal-means-in-net)和[有什么区别'受保护'和'受保护的内部'](http://stackoverflow.com/questions/585859/what-is-the-difference-between-protected-and-protected-internal) – 2010-08-19 18:58:28