【发布时间】:2013-11-20 18:52:07
【问题描述】:
我是 C# 新手,我想知道是否有人可以解释为什么列表没有在 foreach 循环中按顺序打印出来?我还注意到,如果您在监视窗口中查看卡片,.ToList() 会更改卡片的顺序。为什么会这样?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CardShuffle
{
class Program
{
static void Main(string[] args)
{
var r = new Random();
var cards = Enumerable.Range(0, 51);
var shuffledcards = cards.OrderBy(a => r.Next(1000));
var aList = shuffledcards.ToList();
foreach( int card in aList)
{
Console.WriteLine("Card {0} is {1}.", card, aList[card]);
}
Console.WriteLine();
for (int card = 0; card < aList.Count; ++card )
{
Console.WriteLine("Card {0} is {1}.", card, aList[card]);
}
Console.ReadKey();
}
}
}
【问题讨论】:
-
你想要的顺序是什么?你的列表应该有一个随机的顺序。
-
您是根据随机数订购的
-
@KingKing 我认为这应该是随机的,因为他只是用
var shuffledcards = cards.OrderBy(a => r.Next(1000));“洗牌”了牌 -
他的问题是 for 循环和 foreach 产生不同的打印输出。这已被多次询问和回答...stackoverflow.com/questions/1790245/…
-
你的 foreach 循环是错误的。
标签: c#