2016-04-11 11 views
0

これは初めてのことです。ループ内に複数のオブジェクトを作成する

ここに私の問題があります。ループ内に複数のオブジェクトを作成する必要があります。しかし、私はそれを行う方法を知らない。

List<myClass> ObjectList = new List<MyClass>(); 

、その後:

ObjectList.Add(new MyClass(a,b)); 

クラスは、 "a" と "b" が設定されている記述子とのparamsであり、すでにこのようにそれをやってみました。

class myClass 
{ 
    int a; 
    int b; 
    public MyClass(int A, int B) 
    { 
     a=A; 
     b=B; 
    } 

    class Main() 
    { 
     Random r=new Random(); 
     MyClass a1 = new MyClass(r.Next(0,11)); 
     MyClass a2 = new MyClass(r.Next(0,11)); 
     MyClass a3 = new MyClass(r.Next(0,11)); 
     MyClass a4 = new MyClass(r.Next(0,11)); 
     MyClass a5 = new MyClass(r.Next(0,11)); 
     MyClass a6 = new MyClass(r.Next(0,11)); 
    } 
} 

そして私は、私は、私はなりますどのようにこれらの多くを知ることができない原因、ループ内でこれらのオブジェクトを作成する方法を見つける必要があります:

だから、私はこれを探していますファイルから行列を読み込む。

+4

eの問題、なぜループを使用できないのですか?あなたの努力を示してください。あなたのファイルの様子を表示する。 –

+1

いくつのオブジェクトがあるかわからない場合は、while(!endOfFile){} 'を使用して各オブジェクトを作成し、リストに追加することができます – Rob

+1

ループの内部でコードを使用できます:' ObjectList。追加する(新しいMyClass(r.Next(0,11)、r.Next(0,11))); '。表示されているように、あなたの問題を理解することは難しく、問題を解決するためにどのように役立つのでしょうか。 – Fabjan

答えて

1

ソースがなくなるまで繰り返しソースからアイテムを取得しようとすると、何かを初期化したいという状況には、共通の解決策があります。

これは「ループアンドハーフ」コンストラクトと呼ばれ、(これは単一の出口を持つループであるため、適切な「構造化」コンストラクトです)。

一般的なアプローチは、このように書き:C#で

while (true) 
{ 
    attempt to obtain next item; 

    if (no more items available) 
     break loop; 

    add item to collection; 
} 

一般的な実装は次のようになります。別として

class MyClass 
{ 
} 

class MyInitData 
{ 
} 

static class Program 
{ 
    static void Main(string[] args) 
    { 
     var list = new List<MyClass>(); 

     while (true) 
     { 
      var initData = GetNextItem(); // Returns null when no more items are available. 

      if (initData == null) // No more items available. 
       break; 

      list.Add(CreateMyClassFromInitData(initData)); 
     } 
    } 

    static MyInitData GetNextItem() // Returns null when no more items are available. 
    { 
     // Code to return next item. Implementation omitted here. 
     return null; 
    } 

    static MyClass CreateMyClassFromInitData(MyInitData initData) 
    { 
     // Create a new MyClass from initData. Implementation omitted here. 
     return new MyClass(); 
    } 
} 

- シンプルな - たとえば、ここにあなたが数を読んで行くかもしれない方法です文字列をテキストファイルから取り出し、ループとハーフを使ってintのリストに変換します。

var list = new List<int>(); 

using (var reader = File.OpenText("MyFileName.txt")) 
{ 
    while (true) 
    { 
     string line = reader.ReadLine(); 

     if (line == null) 
      break; 

     list.Add(int.Parse(line)); 
    } 
} 
関連する問題