将随机生成的颜色分配给值

时间:2017-05-09 19:18:55

标签: c# list hyperlink colors

我在加入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, "pedro@gmail.com"));
        ListaUtente.Add(new Utente(22, "Lucas", 555444333, "lucas91@gmail.com"));
        ListaUtente.Add(new Utente(22, "Rodrigo", 555444333, "rodrigo00@gmail.com"));
        ListaUtente.Add(new Utente(22, "Gaspar", 555444333, "gaspar@gmail.com"));
        ListaUtente.Add(new Utente(22, "Assis", 555444333, "assis@gmail.com"));

我需要程序输出其中一种随机颜色(紫色,红色,黄色和绿色)并将其写在屏幕上。

类似的东西:

Lucas - Green
Rodrigo - Red

如何链接这两个块?我可以完全访问列表以及&#34; Utente&#34;类属性。

2 个答案:

答案 0 :(得分:4)

我不确定你在这里寻找什么。您可以只将一个Color属性添加到Utente类并更新构造函数,以便您可以调用此

ListaUtente.Add(new Utente(22, "Pedro", 555444333, "pedro@gmail.com", GetRandomColor()));

然后

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

答案 1 :(得分:0)

喜欢这个?:

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

同样正如Chris Dunaway指出的那样,由于每次调用GetRandomColor()时都会创建一个新的Random实例,因此默认种子(系统时间)相同(在更快的机器上),因此可能会产生相同的随机数)所有电话。

因此,更好的方法是从当时方法中提取Random对象。 类似的东西:

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