Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将随机生成的颜色指定给值_C#_List_Hyperlink_Colors - Fatal编程技术网

C# 将随机生成的颜色指定给值

C# 将随机生成的颜色指定给值,c#,list,hyperlink,colors,C#,List,Hyperlink,Colors,我在连接两个代码块时遇到问题。 我有这个代码生成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)

我在连接两个代码块时遇到问题。 我有这个代码生成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"));

我如何连接这两个街区?我可以完全访问列表和“Utene”类属性。

我不确定您在这里寻找什么。您可以只向Utene类添加一个Color属性并更新构造函数以便调用它吗

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

像这样

foreach(Utente utente in ListaUtente)
{
    Console.WriteLine($"{ GetRandomColor() } - { utente.Name }");
}
正如Chris Dunaway指出的,由于每次调用GetRandomColor()时都会创建一个新的Random实例,因此很可能会产生相同的随机数,因为所有调用的默认种子(系统时间)都是相同的(在速度更快的机器上)

因此,更好的方法是从then方法中提取随机对象。 比如:

Lucas - Green
Rodrigo - Red
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)];
}

你能把你已经尝试过的东西放进去吗?很难理解“关联块”的含义,您应该将
Random
实例的创建移到
GetRandomColor
方法之外。如果您快速连续多次调用该方法(例如,在for循环中),则可能会多次返回相同的颜色。谢谢,我将尝试此解决方案并在中报告!我收到此错误-错误15当前上下文中不存在名称“颜色”。你知道我该怎么解决这个问题吗?这些都在一节课上吗?我以为这是家庭作业什么的,所以你都是在Program.cs里做的。如果你在谷歌上搜索这个错误,你会发现这意味着无论你在哪里声明颜色数组,它的作用域都与你使用它的不同。这是医院管理系统的最终项目,我对这个特定部分有问题。我有一个main.cs文件,其中有一个颜色生成器代码和一个带有Utene类的separte.cs文件。那么颜色在哪里呢?听起来像是在你的程序类中(主函数在那里)。那是你建Listaute的地方吗?基本上,听起来您需要对其进行设置,以便主要实例化列表并在写入控制台时对其进行迭代。当颜色生成器在一个静态类中时,您可以从main访问它,然后在其他文件中定义color&ute类。为了简单起见,只需将所有这些类隐藏在同一名称空间中。这可能会导致每个实例的颜色相同,因为
Random
的实例是在
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)];
}