【问题标题】:Getting the value of an integer array from LIST<>从 LIST<> 获取整数数组的值
【发布时间】:2018-12-19 17:19:57
【问题描述】:

谁能告诉我为什么消息框没有显示随机数的值?我正在尝试获取 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());
            }
        }

【问题讨论】:

  • 什么是pattern
  • 我添加了模式代码,对不起。这是一个整数列表。
  • 试试:MessageBox.Show(string.join(",",pattern.Select(x => x.ToString())));
  • 因为你显示的是列表,而不是数字?

标签: c# list random


【解决方案1】:

patternList&lt;int&gt;。当您对它执行 .ToString() 时,它是在整个对象上(即所有项目,而不仅仅是一个)。 List 没有提供显示项目的方法,所以它只返回类型。

要一次显示一个数字,您需要这样做:

pattern[counter].ToString()

这将选择您列表中的特定项目,因为counter 与您列表的当前索引匹配。

【讨论】:

  • 谢谢! @MikeH这就是我想做的。完美运行。我感谢所有的答案。
【解决方案2】:

如果没有被覆盖,ToString() 将显示对象类型的名称。在您的情况下,它将显示List&lt;int&gt; 类型的名称:

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());

【讨论】:

    【解决方案3】:

    您正试图在消息框中显示一个列表对象。而是尝试下面的代码

     for (int counter = 0; counter < rounds; counter++)
                {
                    var randNo = number.Next(1, 4);
                    pattern.Add(randNo );
                    MessageBox.Show(randNo);
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多