谁能告诉我为什么消息框没有显示随机数的值?我正在尝试获取10个随机数,并在消息框中一次显示一个。数字可以重复,并且应该在1到4之间。
public void GetRandomPattern()
{
List<int> pattern = new List<int>();
rounds = 10;
Random number = new Random();
for (int counter = 0; counter < rounds; counter++)
{
pattern.Add(number.Next(1, 4));
MessageBox.Show(pattern.ToString());
}
}
答案 0 :(得分:2)
pattern
是List<int>
。当您对整个对象(即所有项目,而不仅仅是一个项目)执行.ToString()
时。 List
没有提供显示项目的方法,因此只返回类型。
要一次显示一个数字,您需要这样做:
pattern[counter].ToString()
由于counter
与列表的当前索引匹配,因此将选择列表中的特定项目。
答案 1 :(得分:2)
如果未覆盖,ToString()
将为您显示对象类型的名称。对于您的情况,它将显示List<int>
类型的名称:
System.Collections.Generic.List`1 [System.Int32]
如果要显示列表的内容,则应手动创建字符串。例如
var formattedPattern = String.Join(", ", pattern); // "2, 1, 3, 2"
MessageBox.Show(formattedPattern );
如果要在每次迭代中显示列表的各个项目,则可以按照@MikeH的建议按索引引用它们,或为此使用一个临时变量
var nextNumber = number.Next(1, 4);
pattern.Add(nextNumber);
MessageBox.Show(nextNumber.ToString());
答案 2 :(得分:0)
您正在尝试在消息框中显示列表对象。而是尝试下面的代码
for (int counter = 0; counter < rounds; counter++)
{
var randNo = number.Next(1, 4);
pattern.Add(randNo );
MessageBox.Show(randNo);
}