c#中的静态字段问题(错误CS0120)
Static field problem (error CS0120) in c#
我必须为我的函数 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!");
}
}```
DajGlos
是一个实例方法,因此正如错误消息所说,您需要在特定实例(在您的情况下 - pies
)上调用它,而不是在 class 本身。即:
Pies pies = new Pies("Reksio", "ssaki", "lądowe", 50);
Pies.Przedstaw("Reksio", "ssaki", "lądowe");
pies.DajGlos(); // Here!
ClassName.StaticMethodName(...)
用于访问静态方法。
ObjectName.NonStaticMethodName(...)
用于访问非静态方法。
Pies.DajGlos();
行是 ClassName.NonStaticMethodName(...)
,这是不允许的。
我猜你想做的是:pies.DajGlos();
.
我必须为我的函数 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!");
}
}```
DajGlos
是一个实例方法,因此正如错误消息所说,您需要在特定实例(在您的情况下 - pies
)上调用它,而不是在 class 本身。即:
Pies pies = new Pies("Reksio", "ssaki", "lądowe", 50);
Pies.Przedstaw("Reksio", "ssaki", "lądowe");
pies.DajGlos(); // Here!
ClassName.StaticMethodName(...)
用于访问静态方法。
ObjectName.NonStaticMethodName(...)
用于访问非静态方法。
Pies.DajGlos();
行是 ClassName.NonStaticMethodName(...)
,这是不允许的。
我猜你想做的是:pies.DajGlos();
.