受保护与受保护的内部(再次)在c#中
参见英文答案 >
What is the difference between ‘protected’ and ‘protected internal’?????????????????????????????????????10个
我正在提出一个问题(再次)关于受保护的内容,因为我仍然不确定并且无法控制它们. 任何帮助深表感谢. // DLL 1 namespace Assembly1 { class class1 : class2 { static void Main() { new class1().Test(); } private void Test() { Console.WriteLine(this.sample); } } } // DLL 2 namespace Assembly2 { public class class2 { // protected string sample = "Test"; protected internal string sample = "Test"; //Same behavior when using protected and protected internal. Why ? } } 我对这两行都有相同的行为. // protected string sample = "Test"; protected internal string sample = "Test"; 但我相信应该有一些区别.
只要我从基类继承,我就可以从外部程序集访问受保护和受保护的内部. 很混乱!两者看起来完全相似.任何人都可以通过修改上面的例子来解释我吗? 解决方法
protected意味着您可以从任何子类型(当然还有声明类型本身)访问该成员.因此,无论该子类型在哪里,即使它在另一个程序集中,您仍然可以访问所有受保护的成员.
internal表示您可以从同一程序集中的任何类型访问该成员.因此,即使是位于同一程序集中的完全不相关的类也可以访问该成员. protected internal结合了两者,意味着两者都单独应用.因此,您可以从任何子类型访问该成员,也可以从同一程序集中的任何类型访问该成员. // Assembly 1 class A { protected int foo; internal int bar; protected internal int baz; } class B : A {} // can access: foo,bar,baz class C {} // can access: bar,baz // Assembly 2 class D : A {} // can access: foo,baz class E {} // can access neither (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |