我有以下代码
class A{
public void display()
{
Console.WriteLine("In class A");
}
}
class B:A{
public void display()
{
Console.WriteLine("In class B");
}
public static void show()
{
//base.display(); gives error
}
}
在上面的代码base.display();给出错误。我必须在方法show()中调用基类方法display()而不创建类A的对象。我可以这样做吗?或者我不能这样做?
答案 0 :(得分:5)
static
方法不属于某个实例,因此它没有base
。如果A.display()
也是A.display()
方法,则只能说static
。您也可以在调用new A().display()
后说display()
来放弃该实例。
答案 1 :(得分:3)
您不能在静态方法中使用实例数据。
静态方法应该是自包含的。这就是说它会 在不需要或保存任何有状态数据的情况下执行其功能。
class A{
public static void display()
{
Console.WriteLine("In class A");
}
}
class B : A
{
public void display()
{
Console.WriteLine("In class B");
}
public static void show()
{
A.display();
}
}
答案 2 :(得分:2)
您收到错误是因为您正在从静态方法调用实例方法,这是不允许的。
这里有3个选项。你可以选择适合你的任何东西。
选项1。
class A{
public void display()
{
Console.WriteLine("In class A");
}
}
class B:A{
public void display()
{
Console.WriteLine("In class B");
}
public void show()
{
base.display();
}
}
选项2:
class A{
public static void display()
{
Console.WriteLine("In class A");
}
}
class B:A{
public void display()
{
Console.WriteLine("In class B");
}
public void show()
{
A.display();
}
}
选项3:
class A{
public void display()
{
Console.WriteLine("In class A");
}
}
class B:A{
public void display()
{
Console.WriteLine("In class B");
}
public void show()
{
new A().display();
}
}