派生类中是否有静态方法和变量?

时间:2010-11-01 06:51:31

标签: c# inheritance static-members

我在类中有静态变量和方法。它们是否会在派生类中继承?

例如:

class A 
{
    public static int x;
    public static void m1()
    {
        some code
    } 
}
class B:A
{
    B b=new B();
    b.m1();  // will it be correct or not, or will I have to write 
             // new public voim1();      or      public void  m1();
    b.x=20;  // will it be correct or not?
}

4 个答案:

答案 0 :(得分:3)

静态成员可用,但您无法在实例上引用它们。相反,使用类型引用。

E.g。

class B:A
{
    public void Foo()
    {
        A.m1();
        A.x=20;
    }
}

答案 1 :(得分:3)

静态成员将在派生类中可用,但您无法使用实例引用访问它们。您可以直接访问它们:

m1();
x = 20;

或使用班级名称:

A.m1();
A.x = 20;

答案 2 :(得分:2)

静态成员可用,但您无法在实例上引用它们。因此,您必须使用超类的类前缀。 A.m1()

这与使用实例引用访问静态方法和字段的Java语言形成鲜明对比。

答案 3 :(得分:1)

静态成员与实例无关,因为它是Class变量或Class方法,您可以使用类名访问它。它通常用于保留一般类信息,例如创建的实例数等等。