日期:2014-05-19  浏览次数:20866 次

新手求助!C#入门经典3中一个示例中的代码不理解
public   void   Shuffle()
                {
                        Card[]   newDeck   =   new   Card[52];
                        bool[]   assigned   =   new   bool[52];
                        Random   sourceGen   =   new   Random();
                        for   (int   i   =   0;   i   <   52;   i++)
                        {
                                int   destCard   =   0;
                                bool   foundCard   =   false;
                                while   (foundCard   ==   false)
                                {
                                        destCard   =   sourceGen.Next(52);
                                        if   (assigned[destCard]   ==   false)
                                                foundCard   =   true;
                                }
                                assigned[destCard]   =   true;
                                newDeck[destCard]   =   cards[i];
                        }
                        newDeck.CopyTo(cards,   0);
这是一副扑克牌.Shuffle()是创建1个扑克牌临时数组.并把扑克牌从现有的数组随即复制到这个数组中.每次循环,都用.NET   Framework中的System.Random类的实例生成一个0-51之间的随即数.进行了实例后,对象就使用方法Next(X)生成0-x之间的随即数.有了1个随即数后,就可以使用他作为临时数组中Card对象的下标.以便复制cards数组中的扑克牌.
还有1个bool变量的数组,在复制每张牌时,把改数组中的值指定为true.生成随即数时检查这个数组,看看是否已经把一张牌复制到临时数组中由随即数指定的位置上了.如果复制好了,就将生成另一个随即数.
上面是书中的解释.我不太理解其中的代码.
bool   foundCard=false;中的foundCard是什么.为什么这样写呢?
int   destCard   =   0;
                                bool   foundCard   =   false;
                                while   (foundCard   ==   false)
                                {