C# 我应该如何避免代码中的CS0120错误?

C# 我应该如何避免代码中的CS0120错误?,c#,C#,首先我会让你看看我的代码, 我有一个类存储一些数据: 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

首先我会让你看看我的代码, 我有一个类存储一些数据:

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;
        }        
    }
其次,我有一个类,它列出了这些数据,并将其按顺序存储。一旦我消除了这个讨厌的错误,我还打算对这些数据进行一些操作

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);
        }
        }
    }
public-class-Baltile
{
公共int n;
List BARTI=新列表();
公共空间填充(Balta Balta)
{
int unitId=balta.id;
if(balti.Any(Balta=>Balta.id==Balta.id))
{
int pos=balti.FindIndex(Balta=>Balta.id==Balta.id);
巴尔蒂[位置]=巴尔塔;
}
else if(balti.Any(Balta=>Balta.cantApa==-1)和&!balti.Any(Balta=>Balta.id==unitId))
{                    
int pos=balti.FindIndex(Balta=>Balta.cantApa==-1);
巴尔蒂[位置]=巴尔塔;
}
其他//daca nu inseamna ca aduaugi balta la lista
{
波罗的海-加(巴尔塔);
}
}
}
main看起来像这样

 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
               }
             }
           }
         }
static void Main(字符串[]args)
{             
波罗的海=新波罗的海();
while(true)
{
“数据输入块”
对于(int i=0;i2)
{
Balta Balta=新Balta(x,y,半径,额外,单位ID,0);
populate(balta);//这里是CS0120错误
}
}
}
}
所以CS0120告诉我非静态字段、方法或属性需要一个对象引用。这意味着main是静态的,所以如果我理解正确,我不能调用非静态方法?将所有内容声明为静态将导致更多错误

我该怎么做?我似乎不知道如何使我的代码工作?

Baltile.populate(balta);
Baltile
作为一个类名,这需要
populate()
作为一个静态方法

,则完整的错误消息为

编译器错误CS0120

非静态字段、方法或对象需要对象引用 属性“成员”

这告诉您使用对象而不是类。您似乎已经有了一个名为
balti
的对象来实现这一目的。所以使用

balti.populate(balta);
相反。现在,您可以对实例(对象)而不是类调用
populate()
方法