0

私の質問は、次のコードを変更して、同じオブジェクトの10個ではなく、オブジェクトの10個の異なるインスタンスを作成する方法です。

 List <OBJ> newList = new List<OBJ> ();
 for (int i = 0; i < 10; i++){
     OBJ newOBJ = new OBJ (i);
     newList.Add(newOBJ);  
 }

OBJクラスは次のとおりです。

 class OBJ    {
    public static int numb;

    public OBJ(int i)
    {
        numb = i;
    }
}
4

7 に答える 7

8

それは10の異なるオブジェクトです。しかし、番号がであるstaticため、それらはすべて同じ番号になります。

したがって、必要に応じて非静的にします。

class OBJ    {
    public int numb;

    public OBJ(int i)
    {
        numb = i;
    }
}

インスタンスの数をカウントする場合は、静的のままにしておくことができます。

class OBJ    {
    public static int num_instances;
    public int number;

    public OBJ(int i)
    {
        number = i;
        num_instances ++;
    }
}
于 2012-08-21T14:16:43.783 に答える
3

クラスnumbフィールドの代わりにインスタンスフィールドを作成します。:を削除しますstatic

public int numb;

staticすべてのインスタンスがOBJ同じint名前のを使用する場合numb

于 2012-08-21T14:16:08.980 に答える
2

それはあなたのコードがすでに行っていることです。メンバーのstaticキーワードにより、numbのすべてのインスタンスでnumbが共有されますOBJ

于 2012-08-21T14:16:25.560 に答える
2

あなたの質問を理解できるかどうかはわかりませんが、staticキーワードを削除してみてください。

于 2012-08-21T14:16:29.977 に答える
2

を使用するnewたびに、新しいインスタンスを取得します。コードは問題ないようです。static唯一の問題は、から削除する必要があることですpublic static int numb

class OBJ    {
  public int numb;

  public OBJ(int i)
  {
      numb = i;
  }
}
于 2012-08-21T14:17:28.710 に答える
1

新しいインスタンスを作成していますが、唯一のプロパティは静的であり、すべてのインスタンス間で共有されます。

于 2012-08-21T14:17:28.637 に答える
0

staticキーワード のみを削除する必要があります...これを見てください:http: //msdn.microsoft.com/en-us/library/98f28cdx (v = vs.100).aspx

于 2012-08-21T14:27:28.700 に答える