gpt4 book ai didi

c# - 数组在 foreach 循环中未正确初始化

转载 作者:行者123 更新时间:2023-11-30 20:46:07 24 4
gpt4 key购买 nike

所以我正在尝试制作一个随机数生成器:

private static void init() 
{
int[] integ = new int[10];

Random random = new Random();

// init
foreach (int integer in integ)
{
integ[integer] = rand.Next(5,35);
}


foreach (int b in integ)
{
Console.WriteLine("Byte = " + b);
}
}

static void Main(string[] args)
{
init();

Console.ReadKey();
}

但出于某种原因,当我运行它时,它会打印出:

Byte = (*random number here*)
Byte = 0
Byte = 0
etc...

我多次运行以确保,每次只有第一个有一个非零数字。

如有任何建议,我们将不胜感激,在此先感谢。

最佳答案

让我们看看它做了什么:

foreach (int integer in integ)
{
integ[integer] = rand.Next(5,35);
}

基本上,一个 foreach 循环遍历 integ (最初都是 0 ),并在 integ 中的该索引处设置该值到一个随机数。因此它只会填充数组中的第一项。

要初始化数组,请使用 for 循环代替:

for (int i = 0; i < integ.Length; i++)
{
integ[i] = rand.Next(5,35);
}

或者如果您熟悉 Linq:

Random random = new Random();
int[] integ = Enumerable.Repeat(0, 10)
.Select(i => random.Next(5, 35))
.ToArray();

正如 Blindy 指出的那样,如果您只想打印值,则甚至不需要数组:

Random random = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Byte = {0}", rand.Next(5,35));
}

关于c# - 数组在 foreach 循环中未正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com