2017-05-06 14 views
-2

私は初心者ですが、MainのコンストラクタからConsole.Write()配列を探しています。私はまた、ToString()をConsole.Write()にintの配列を文字列としてオーバーライドしようとしていますが、それを行う手がかりを見つけていません。コンストラクタからオブジェクトを作成する配列を使ってオブジェクトを作成する

namespace Z1 
{ 
class List 
{ 


    public List(int b) 
    { 
    int[] tabb = new int[b]; 
    Random r1 = new Random(); 
    for(int i=0;i<b;i++) 
    { 
     tabb [i] =r1.Next(0, 100); 
    } 
    } 

    public List() 
    { 
    Random r2 = new Random(); 
    int rInt1=r2.Next(0,10); 
    int[] tabc = new int[rInt1]; 
    Random r3 = new Random(); 
    for(int i=0;i<rInt1;i++){ 
     tabc [i] = r3.Next(0,100); 

    } 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
     List l1 = new List(10); 
     List l2 = new List(); 
     Console.WriteLine(l1.ToString()); 
     Console.WriteLine(l2.ToString()); 

    } 
} 

}

+0

"ToStringをC#でオーバーライドする方法"を試しましたか? – Abion47

答えて

0

あなただけが個別にそれぞれの値を印刷する必要があります、配列を印刷することはできません。ちょうどConsole.WriteLine();の代わりにこれを試してみてください。また、あなたは二つの配列があるusing LINQ;

l1.ToList().ForEach(Console.WriteLine); 
l2.ToList().ForEach(Console.WriteLine); 
1

変更するには、最初のものを持って、あなたのクラスの先頭に確認してください。それらはローカル変数です。コンストラクタを終了すると、それらは単に破棄され、使用できなくなります。ユーザーが指定したサイズ、または1から10までのランダムなサイズで作成できる配列が1つだけ必要だと思います。

最後に、通常の方法でToString()をオーバーライドし、配列

class List 
{ 
    static Random r1 = new Random(); 
    private int[] tabb; 

    public List(int b) 
    { 
     tabb = new int[b]; 
     for (int i = 0; i < b; i++) 
      tabb[i] = r1.Next(0, 100); 
    } 
    // This constructor calls the first one with a random number between 1 and 10 
    public List(): this(r1.Next(1,11)) 
    { } 

    public override string ToString() 
    { 
     return string.Join(",", tabb); 
    } 
} 

これで、Mainメソッドで期待される結果が得られるようになりました。

これは単なるテストプログラムなので、あまり心配はありませんが、実際のプログラムでは、フレームワークで定義されたクラスと衝突する名前を持つクラスの作成を避けることを強くお勧めします。名前、リスト、タスク、キューなどを避ける方が良いです...

関連する問題