2017-11-19 17 views
-1

まず、私はあなたに私のコードの周りに実行を与えるだろう、 私はいくつかのデータを保存するクラスを持っている:私のコードでCS0120エラーを避けるには?

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; 
     }   
    } 

は、第二に、私は、私はまた、そのデータとacordingly記憶するのリストを作成するクラスを持っています私はこの厄介なエラーを取り除くと、そのデータでいくつかの操作を行うつもりです。

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); 
     } 
     } 
    } 

そしてメインは、この

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 
       } 
      } 
      } 
     } 

だから、CS0120のようなものがこのオブジェクト参照が非静的フィールド、メソッドのために必要である私に語っ見える、またはproperty.Thisはメインので、私はカント静的であることを意味しもし私が正しく理解すれば、非静的メソッドを呼び出す?静的なものをすべて宣言すると、さらに多くのエラーが発生します。

どうすればいいですか?私のコードを動作させる方法を理解できないようですね?

Baltile.populate(balta); 

Baltileクラス名された状態で

答えて

0

、これは静的メソッドであることをpopulate()を必要とします。

As per MSDN、完全なエラーメッセージである

コンパイラエラーCS0120

は、オブジェクト参照が非静的フィールド、メソッド、または プロパティ 'メンバー' のために必要とされる

これは告げますあなたはクラスの代わりにオブジェクトを使うべきです。そして、あなたはすでにこの目的を果たすbaltiというオブジェクトを持っているようです。代わりに

balti.populate(balta); 

を使用してください。今度はクラスの代わりにインスタンス(オブジェクト)のpopulate()メソッドを呼び出します。

関連する問題