C# 将随机生成的颜色指定给值
我在连接两个代码块时遇到问题。 我有这个代码生成4个随机颜色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)
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)];
}