Zuerst i Sie einen Lauf um meinen Code geben, Ich habe eine Klasse, die einige Daten speichert:Wie sollte ich den CS0120 Fehler in meinem Code vermeiden?
public class Balta
{
public int x;
public int y;
public int raza;
public int cantApa;
public int id;
public int intersect;
public Balta(int xs, int ys, int r, int cApa, int ids, int intersctt)
{
x = xs;
y = ys;
raza = r;
cantApa = cApa;
id = ids;
intersect = intersctt;
}
}
Zweitens habe ich eine Klasse, die eine Liste der Daten und speichert sie acordingly macht, ich auch Ich beabsichtige, einige Operationen mit diesen Daten durchzuführen, sobald ich diesen lästigen Fehler losgeworden bin.
public class Baltile
{
public int n;
List<Balta> balti = new List<Balta>();
public void populate(Balta balta)
{
int unitId = balta.id;
if (balti.Any(Balta => Balta.id == balta.id))
{
int pos = balti.FindIndex(Balta => Balta.id == balta.id);
balti[pos] = balta;
}
else if (balti.Any(Balta => Balta.cantApa == -1) && !balti.Any(Balta => Balta.id == unitId))
{
int pos = balti.FindIndex(Balta => Balta.cantApa == -1);
balti[pos] = balta;
}
else //daca nu inseamna ca aduaugi balta la lista
{
balti.Add(balta);
}
}
}
Und Haupt sieht so etwas wie dieser
static void Main(string[] args)
{
Baltile balti = new Baltile();
while (true)
{
"data input block"
for (int i = 0; i < unitCount; i++)
{
"more data input"
if (i>2)
{
Balta balta = new Balta(x, y, radius, extra, unitId, 0);
Baltile.populate(balta);//the CS0120 error is here
}
}
}
}
So CS0120 sagt mir, dies Eine Objektreferenz für die nicht-statisches Feld, Methode erforderlich ist, oder property.This bedeutet statisches Haupt ist so ich kippe eine nicht statische Methode aufrufen, wenn ich richtig verstanden habe? Wenn Sie alles statisch deklarieren, erhalten Sie noch mehr Fehler.
Wie soll ich das umgehen? Ich kann nicht herausfinden, wie ich meinen Code funktionieren lassen kann.