c#中的静态字段问题(错误CS0120)



我必须为函数DajGlos((创建一个重写函数,但我返回错误CS0120(非静态字段、方法或属性需要对象引用(。我该怎么解决这个问题?

我的代码:

static void Main(string[] args)
{
Pies pies = new Pies("Reksio", "ssaki", "lądowe", 50);
Pies.Przedstaw("Reksio", "ssaki", "lądowe");
Pies.DajGlos();
}

abstract class Zwierze
{
private static string Rodzina { get; set; }
private static string Grupa { get; set; }
private static string Imie { get; set; }
public static void Przedstaw(string Imie, string Rodzina, string Grupa)
{
Console.WriteLine("Jestem " + Imie + ", rodzina: " + Rodzina + ", grupa: " + Grupa);
}
public abstract void DajGlos();
}
class Pies : Zwierze
{
public Pies(string Imie, string Rodzina, string Grupa, int dlugoscOgona)
{

}
int dlugoscOgona;
public override void DajGlos()
{
Console.WriteLine("Bark!");
}
}```

ClassName.StaticMethodName(...)用于访问静态方法
ObjectName.NonStaticMethodName(...)用于访问非静态方法
Pies.DajGlos();行为ClassName.NonStaticMethodName(...),这是不允许的
我想你想做的是:pies.DajGlos();

DajGlos是一个实例方法,因此正如错误消息所说,您需要在特定实例上调用它(在您的例子中是pies(,而不是在类本身上。即:

Pies pies = new Pies("Reksio", "ssaki", "lądowe", 50);
Pies.Przedstaw("Reksio", "ssaki", "lądowe");
pies.DajGlos(); // Here!

最新更新