2017-05-09 19 views
2

2ブロックのコードを結合する際に問題があります。 私は4つのランダムな色を生成するためにこのコードを持っています。ランダムに生成された色を値に割り当てる

static Color[] colors = { Color.Red, Color.Green, Color.Yellow, Color.Purple}; // Escolher as cores disponiveis 
static Color GetRandomColor() 
{ 
    var random = new Random(); 
    return colors[random.Next(colors.Length)]; 
} 

私はコードが良いと思いますが、それが私に教えてください。

私はこのコードに関連付けする必要があります。

List<Utente> ListaUtente = new List<Utente>(); 
     ListaUtente.Add(new Utente(22, "Pedro", 555444333, "[email protected]")); 
     ListaUtente.Add(new Utente(22, "Lucas", 555444333, "[email protected]")); 
     ListaUtente.Add(new Utente(22, "Rodrigo", 555444333, "[email protected]")); 
     ListaUtente.Add(new Utente(22, "Gaspar", 555444333, "[email protected]")); 
     ListaUtente.Add(new Utente(22, "Assis", 555444333, "[email protected]")); 

は、私はこれらのランダムな色(紫、赤、黄、緑)の出力1にプログラムを必要とし、画面上に書きます。

のような何か:

Lucas - Green 
Rodrigo - Red 

は、どのように私は、これら2つのブロックをリンクすることができますか?私はリストと "Utente"クラスの属性に完全にアクセスできます。

+0

あなたはすでに試みたことを置くことができますか? "ブロックを関連付ける"という意味を知るのは難しい – DataHerder

+0

'Random'のインスタンスの作成を' GetRandomColor'メソッドの外に移動する必要があります。このメソッドを何度も連続して(例えばforループで)呼び出すと、同じ色が複数回返される可能性が高くなります。 –

答えて

4

ここであなたが探しているものがわかりません。クリス・ダナウェイとしても

foreach(Utente utente in ListaUtente) 
{ 
    Console.WriteLine($"{ GetRandomColor() } - { utente.Name }"); 
} 

:?あなたはこの枚この

ListaUtente.Add(new Utente(22, "Pedro", 555444333, "[email protected]", GetRandomColor())); 

その後

foreach(Utente utente in ListaUtente) 
{ 
    Console.WriteLine(utente.Name + " " + utente.Color); 
} 
+0

ありがとう、私はこの解決策を試して、報告するつもり! – Dany4k

+0

このエラーが発生しました - エラー名前 'colors'は現在のコンテキストに存在しません。どのように私はこれを修正できますか? – Dany4k

+0

これはすべて1クラスに入っていますか?これは宿題だったと思っていたので、あなたはProgram.csでそれをやっていました。 Googleにエラーが表示される場合は、カラー配列を宣言している場所が、どこで使用しているのと同じスコープではないことを意味します。 –

0

を呼び出すことができますので、あなただけのUtenteクラスにColorプロパティを追加し、コンストラクタを更新することができますあなたがGetRandomColor()を呼び出すたびにランダムの新しいインスタンスを作成するので、デフォルトのシード(システム時間)は(高速なマシンでは)同じであるため、同じ乱数が返される可能性が高いと指摘していますコールします。

したがって、より良い方法は、メソッドからランダムオブジェクトを抽出することです。 何かのように:

static Color[] colors = { Color.Red, Color.Green,Color.Yellow,Color.Purple}; 
static Random random = new Random(); 
static Color GetRandomColor() 
{ 
    return colors[random.Next(colors.Length)]; 
} 
+1

これは、 'Random'のインスタンスが' GetRandomColor'メソッドの内部で作成されているので、インスタンスごとに同じ色になる可能性があります。あなたのせいではありませんが、あなたはそれを指摘したいかもしれません。 –

関連する問題