刚学C#不久,碰到了一个很奇怪的问题。运行的时候不能得到正确的结果但是如果插入断点。单步执行就能得到结果。很奇怪。代码如下。
using System;
using System.Collections.Generic;
using System.Text;
using ClassLib;namespace _4
{
     public  class Program
    {
        public int[] fivecards=new int[5];
        static void Main(string[] args)
        {
            Deck mydeck = new Deck();
            mydeck.Shufel();
            Program mypro = new Program();
            mypro.getfivecard();
            for (int i = 0; i < 5; i++)
            {
                int temp = mypro.fivecards[i];
                Card mycard = mydeck.getcard(temp);
                Console.WriteLine(mycard.ToString());
               
            }
            
        }
        public void getfivecard()
        {  
          
            bool[] mybool = new bool[52];            for (int i = 0; i < 5; i++)
            {
                int destcard = 0;
                bool assgined = false;
                Random r = new Random();                while (assgined == false)
                {
                    destcard = r.Next(52);
                    if (assgined==false)
                    {
                        fivecards[i] = destcard;
                        assgined = true;
                    }
                    mybool[destcard] = true;
                }
        
                
            }
        }
    }
}using System;
using System.Collections.Generic;
using System.Text;namespace ClassLib
{
    public class Deck
    {
        private Card[] cards = new Card[52];
        public Card getcard(int cardnum)
        {
            if (cardnum >= 0 && cardnum <= 51)
            
                return cards[cardnum];
                else
                throw
                    (new System.ArgumentOutOfRangeException("cardnum",cardnum,"值必须在0到51之间"));
            
        }
        public Deck()
        {
            for (int suitcount = 0; suitcount < 4; suitcount++)
            {
                for (int rankcount = 1; rankcount <= 13; rankcount++)
                {
                    cards[suitcount * 13 + rankcount - 1] = new Card((Suit)suitcount,(Rank)rankcount);
                }
            }
        }
        public void Shufel()
        {
            Card [] newcard =new Card[52];
            bool [] assigned=new bool[52];
            for (int i = 0; i <= 51; i++)
            {
                int destcard = 0;
                bool mybool = false;
                
                while (mybool == false)
                {
                    Random r = new Random();
                    destcard = r.Next(52);
                    if (assigned[destcard] == false)
                        mybool = true;
                }
                assigned[destcard] = true;
                newcard[i] = destcard;
                
            
             }
             
           
         }
           }
}
using System;
using System.Collections.Generic;
using System.Text;namespace ClassLib
{   
    public enum Suit
    {
        Club,
        Heart,
        Spade,
        Diamond
    }
    public enum Rank
    {
        Ace=1,
        Two,
        Three,
        Four,
        Five,
        Six,
        Seven,
        Eight,
        Nine,
        Tem,
        Jack,
        Queen,
        King    }
    public class Card
    {
        public readonly Suit suit;
        public readonly Rank rank;        private Card()
        {
 
        }
        public Card(Suit newsuit, Rank newrank)
        {
            suit = newsuit;
            rank = newrank;
        }
        public override string ToString()
        {
            return "The" + rank + "of" + suit + "s";
        }        
    }
}其中建了一个ClassLib的类库包含一个Deck的类和一个Crad类。
主要是实现从谁机的52张牌中抽到5张谁机的牌,但是我得不到结果。
谢谢 !!!!!!!!!!!!!