首先让我对我糟糕的语法和拼写表示抱歉。
我有一个 MVC3 项目,它创建了一个 Deck 并向其中添加了 52 张卡。然后我添加了一个 shuffle 函数,该函数仅在我逐步通过shuffle 方法中的循环时才起作用。
在我的类 Deck 中,我创建了一个包含 52 个 PlayingCard 对象的数组。Deck 有一个将数组复制到我的视图中显示的列表的方法,它还有一个打乱列表的方法。
不容易解释,但代码只运行一次,除非我单步执行。
我的甲板模型中的洗牌方法。
public void Shuffle()
{
for (int i = 0; i < 51; i++)
{
PlayingCard temp;
temp = myDeck[i];
Random rnd = new Random();
int randomNr = rnd.Next(51);
myDeck[i] = myDeck[randomNr];
myDeck[randomNr] = temp;
}
}
随机播放后的输出,无需单步执行:
*4 方块1 颗 2 颗 3 颗 4 颗 5 颗 6 颗 7 颗 8 颗 9 颗 10 颗 11 颗 12 颗 13颗 1 黑桃 2 黑桃 3 黑桃 4 黑桃 5 黑桃 6 黑桃 7 黑桃 8 黑桃 9 黑桃 10 黑桃 11黑桃 12 黑桃 13 黑桃 1 梅花 2梅花 3梅花 4梅花 5梅花 6梅花 7梅花 8梅花 9梅花 10梅花 11梅花 12梅花 13梅花 1菱形 2菱形 12菱形 3菱形 5菱形 6菱形 7菱形 8菱形 9菱形 10钻石 11 钻石 13 钻石 *
单步执行 15 次后的输出:
2 黑桃 3 梅花 5 黑桃 3 菱形 12 菱形 13 红桃 11 红桃 1 黑桃 6 梅花 5 菱形 1 梅花 12 红桃 7 梅花 13 黑桃 2 梅花 10 红桃 3 黑桃 4 黑桃 3 红桃 6 黑桃 7 黑桃 8 黑桃 9 黑桃 10 黑桃 11 黑桃12 黑桃 8 心 7 心 1 心 2 心 4 梅花 5 梅花 9 心 6 心 8 梅花 9 梅花 10 梅花 11 梅花 12 梅花 13 梅花 1 方块 2 方块 4 心 4 方块 5 心 6 方块 7 方块 8 方块 9 方块 10 方块11 颗钻石 13 颗钻石
单步执行整个循环后的输出:
10 红桃 6 梅花 8 红桃 5 红桃 5 梅花 7 方块 5 黑桃 11 方块 12 黑桃 12 梅花 8 方块 5 方块 1 梅花 9 黑桃 10 方块 12 颗红桃 8 黑桃 9 梅花 13 梅花 6 颗红桃 1 黑桃 11 黑桃 1 红桃 12 方块 4 梅花3 个梅花 8 个梅花 9 个钻石 7 个梅花 2 个梅花 3 个钻石 1 个钻石 7 黑桃 10 个黑桃 2 个红桃 6 个黑桃 13 个黑桃 4 个黑桃 2 个黑桃 6 个钻石 4 个红心 2 个钻石 4 个钻石 11 个梅花 7 个红心 11 个红桃 3 个黑桃 3 个红心 10 个梅花 13 个红心9颗心13颗钻石
如图所示,循环仅在我单步执行时运行。我尝试了不同的循环,创建了一个新项目,将随机播放功能移至控制器,没有任何帮助。
任何人有任何想法我应该如何解决这个问题?