C# 每次循环执行C时更改方法调用#
好的,我想打电话给你C# 每次循环执行C时更改方法调用#,c#,loops,methods,for-loop,C#,Loops,Methods,For Loop,好的,我想打电话给你 for (int i = 0; i < b; b--) { color += ChooseColor() + " "; } for(int i=0;i在这种情况下创建Random类static的实例) 这边 static Random random = new Random(); // Global Declaration private static string ChooseColor() { var colors = new List<
for (int i = 0; i < b; b--)
{
color += ChooseColor() + " ";
}
for(int i=0;i
重要的是它会被多次调用。我的ChooseColors()是
private静态字符串ChooseColor()
{
随机=新随机();
var colors=新列表{“蓝色”、“红色”、“绿色”、“靛蓝”、“黑色”、“白色”、“紫罗兰色”、“绿松石色”、“粉色”、“薰衣草色”、“煤渣色”、“深褐色”、“橙色”};
int index=random.Next(colors.Count);
字符串colorName=颜色[索引];
颜色。移除(索引);
返回颜色名称;
}
问题是,我希望它每次都调用ChooseColor的一个新实例。例如,它将打印黑白而不是黑白。现在它一次又一次地打印完全相同的内容,而不是转储电流并再次调用(这是我认为loops所做的>在这种情况下创建Random类static的实例) 这边
static Random random = new Random(); // Global Declaration
private static string ChooseColor()
{
var colors = new List<string> { "Blue", "Red", "Green", "Indigo", "Black", "White", "Violet", "Turquoise", "Pink", "Lavender", "Cinder", "Fuschia", "Orange" };
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
static Random Random=new Random();//全局声明
私有静态字符串ChooseColor()
{
var colors=新列表{“蓝色”、“红色”、“绿色”、“靛蓝”、“黑色”、“白色”、“紫罗兰色”、“绿松石色”、“粉色”、“薰衣草色”、“煤渣色”、“深褐色”、“橙色”};
int index=random.Next(colors.Count);
字符串colorName=颜色[索引];
颜色。移除(索引);
返回颜色名称;
}
要了解更多信息,请阅读此
在这种情况下,创建随机类static的实例 这边
static Random random = new Random(); // Global Declaration
private static string ChooseColor()
{
var colors = new List<string> { "Blue", "Red", "Green", "Indigo", "Black", "White", "Violet", "Turquoise", "Pink", "Lavender", "Cinder", "Fuschia", "Orange" };
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
static Random Random=new Random();//全局声明
私有静态字符串ChooseColor()
{
var colors=新列表{“蓝色”、“红色”、“绿色”、“靛蓝”、“黑色”、“白色”、“紫罗兰色”、“绿松石色”、“粉色”、“薰衣草色”、“煤渣色”、“深褐色”、“橙色”};
int index=random.Next(colors.Count);
字符串colorName=颜色[索引];
颜色。移除(索引);
返回颜色名称;
}
要了解更多信息,请阅读此
数组是在方法中声明的,因此再次调用该方法时会重新声明和填充数组。必须在方法之外静态声明颜色列表 此外,随机化器在每次方法调用时都会再次初始化-在方法外部也只初始化随机化器一次
private static Random random = new Random();
private static List<string> colors = new List<string> { ... };
private static string ChooseColor()
{
if (colors.Count > 0)
{
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
return String.Empty;
}
private static Random=new Random();
私有静态列表颜色=新列表{…};
私有静态字符串ChooseColor()
{
如果(colors.Count>0)
{
int index=random.Next(colors.Count);
字符串colorName=颜色[索引];
颜色。移除(索引);
返回颜色名称;
}
返回字符串。空;
}
请注意,现在调用此方法时,如果颜色列表中没有颜色,则返回空字符串。我认为除了修复随机数发生器问题外,您还应该重新考虑设计(特别是为什么需要从列表中删除颜色).数组是在方法中声明的,因此再次调用该方法时会重新声明和填充数组。必须在方法外部静态声明颜色列表 此外,随机化器在每次方法调用时都会再次初始化-在方法外部也只初始化随机化器一次
private static Random random = new Random();
private static List<string> colors = new List<string> { ... };
private static string ChooseColor()
{
if (colors.Count > 0)
{
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
return String.Empty;
}
private static Random=new Random();
私有静态列表颜色=新列表{…};
私有静态字符串ChooseColor()
{
如果(colors.Count>0)
{
int index=random.Next(colors.Count);
字符串colorName=颜色[索引];
颜色。移除(索引);
返回颜色名称;
}
返回字符串。空;
}
请注意,现在调用此方法时,如果颜色列表中没有颜色,则返回空字符串。我认为除了修复随机数发生器问题外,您还应该重新考虑设计(特别是为什么需要从列表中删除颜色).您正在创建的
随机
实例在时间上过于接近。由于它们是从时钟开始播种的,它们将以相同的数字开始。在函数外部创建一个实例,并将其发送到您调用它的位置
此外,您每次都要创建一个新列表,因此从列表中删除项目没有任何效果。在函数外部创建列表:
Random random = new Random();
List<string> colors = new List<string> { "Blue", "Red", "Green", "Indigo", "Black", "White", "Violet", "Turquoise", "Pink", "Lavender", "Cinder", "Fuschia", "Orange" };
for (int i = 0; i < b; b--) {
color += ChooseColor(colors, random) + " ";
}
private static string ChooseColor(List<string> colors, Random random) {
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
Random Random=new Random();
列表颜色=新列表{“蓝色”、“红色”、“绿色”、“靛蓝”、“黑色”、“白色”、“紫罗兰色”、“绿松石色”、“粉色”、“薰衣草色”、“煤渣色”、“深紫色”、“橙色”};
对于(int i=0;i
您正在创建的随机
实例在时间上过于接近。由于它们是从时钟开始播种的,它们将以相同的数字开始。在函数外部创建一个实例,并将其发送到您调用它的位置
此外,您每次都要创建一个新列表,因此从列表中删除项目没有任何效果。在函数外部创建列表:
Random random = new Random();
List<string> colors = new List<string> { "Blue", "Red", "Green", "Indigo", "Black", "White", "Violet", "Turquoise", "Pink", "Lavender", "Cinder", "Fuschia", "Orange" };
for (int i = 0; i < b; b--) {
color += ChooseColor(colors, random) + " ";
}
private static string ChooseColor(List<string> colors, Random random) {
int index = random.Next(colors.Count);
string colorName = colors[index];
colors.RemoveAt(index);
return colorName;
}
Random Random=new Random();
列表颜色=新列表{“蓝色”、“红色”、“绿色”、“靛蓝”、“黑色”、“白色”、“紫罗兰色”、“绿松石色”、“粉色”、“薰衣草色”、“煤渣色”、“深紫色”、“橙色”};
对于(int i=0;i
这不是问题所在,new Random()
每次isIt都是一个问题,因为他试图通过从数组中删除返回的颜色来限制可能返回的颜色数-如果每次调用时都再次填充列表,则这不起作用。规范没有指定颜色不再出现,因此无需将其从数组中删除。否则,他的代码只会起作用k代表b规格没有规定颜色不会再次出现
-你能给我们看看规格吗