除非我单步执行循环,否则循环不会执行

时间:2012-10-03 15:33:40

标签: c# asp.net-mvc-3 visual-studio-2010 playing-cards

首先让我为我可怕的语法和拼写说抱歉。

我有一个MVC3项目,可以创建一个Deck并添加52张卡片。 然后我添加了一个shuffle函数,只有当我在shuffle方法中逐步执行循环时才能工作。

在我的类Deck中,我创建了一个包含52个PlayingCard对象的Array。 Deck有一个方法将Array复制到我的View中显示的List, 它还有一个洗牌的方法。

不容易解释,但代码只运行一次,除非我单步执行。

我的Deck模型中的shuffle方法。

 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颗钻石

如图所示,循环仅在我单步执行时运行。 我尝试了不同的循环,创建了一个新项目,将shuffle函数移动到控制器,没有任何帮助。

任何人都有任何想法我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我围绕此创建了一个示例应用,并将Random rnd = new Random()移动到循环外部,这给了我期待的行为。

在我看来,它似乎只是在洗牌一张卡片的原因是因为随机生成的值与整个循环的值相同。