【问题标题】:Output a reserve random list (list function) in C#在 C# 中输出一个保留随机列表(列表函数)
【发布时间】:2016-03-22 15:30:04
【问题描述】:

我在 C# 中使用 List 函数并使其成为随机参数。这是我的代码。如果它输出这样的列表:15 20 10 3 6 如何使用上面列表的 reseve 再次输出,例如:6 3 10 20 15

List<int> dso = new List<int>(20);
Random a = new Random();
for (int i = 0; i < dso.Capacity; i++)
{
   int k = a.Next(100);
   dso.Add(k);

   Console.Write("{0}  ", k);
}

for(int i=dso.Capacity;i<20;i--)
{
   Console.Write("{0} ", dso[i]);
}

【问题讨论】:

  • for(int i=dso.Capacity;i&gt;0;i--) 用于最后一个 for 循环
  • 另外,List 有 Reverse() 方法。
  • 您可能还想考虑使用 Stack,而不是 List。然后你只需按下这些值,它们就会以相反的顺序弹出。 msdn.microsoft.com/en-us/library/3278tedw(v=vs.110).aspx

标签: c# list


【解决方案1】:

如果您只是想颠倒列表顺序,请像这样使用Reverse()

dso.Reverse();

foreach (var number in dso)
{
    Console.Write(number + " ");
}

由于您似乎只是在将列表颠倒后完整地写出列表,因此您可以使用foreach loop。但是,如果您需要更多地控制您在列表中的开始位置或在列表中跳转,那么 for 循环会更好。

【讨论】:

    【解决方案2】:

    如果你想要for循环,应该是

    for (int i = dso.Count - 1; i >= 0; i--) {
      Console.Write("{0} ", dso[i]);
    }
    

    评论:

    1. Count 是实际列表项的数量; Capacity 是保留内存
    2. List&lt;T&gt; 是从零开始的,这就是为什么 dso.Count - 1
    3. 由于您以相反的顺序循环,因此条件为i &gt;= 0

    但是,我建议使用 String.JoinLinq 而不是循环,让 .Net 为您完成所有工作:

    // List has its own Reverse() method so we have to put Reverse<int>() to use Linq one
    Console.Write(String.Join(" ", dso.Reverse<int>()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多