.net中的类和访问修饰符

时间:2012-03-08 08:57:44

标签: c# oop access-modifiers

我有关于Oops Concepts的3个问题:

  1. 命名空间中类的默认访问修饰符是什么,我试图将修饰符应用于类,.net编译器抛出错误说“在命名空间中定义的元素不能明确声明为私有,受保护或受保护的朋友”。下面是我的代码。 Access Modifiers for the class in c#

  2. protected internal and internal之间有什么区别,因为内部可以在程序集中使用,而protected internal可以在同一个类中使用,继承类或在同一个程序集中的其他类< / strong>即可。基本上这就是装配的意思。

  3. 如果有2个课程Class1 and Class2,则Class1有Method1()Class2Method2(),如果两者都在继承链中,则Class1 c = new Class2();应允许访问Method2();,因为此处新对象属于Class2,为什么.net允许Method1();我试过了。

3 个答案:

答案 0 :(得分:2)

1)内部

2) 派生类(可能在不同的程序集中)同一程序集中的任何代码都可以访问

3)您引用的class1没有method2 - 您需要引用class2才能调用method2。< / p>

答案 1 :(得分:1)

关于问题2:

protected表示所有派生类都可以访问该方法,internal表示此程序集中的所有类都可以访问该方法。 protected internal是两者的结合。

这是一篇关于受保护内部方法的非常有趣的博客文章:

http://blogs.msdn.com/b/ericlippert/archive/2010/03/25/knights-knaves-protected-and-internal.aspx

答案 2 :(得分:0)

1)存在,因为您需要将该类声明为受保护的或任何更高的访问级别,例如公众

3)子类继承超类成员(在本例中是一个方法)。即使您将class2分配给class1,反向也无法工作。