2010-10-07 101 views
1
public Player(string name, List<Card> cards) 
{ 
    this.name = name; 
    try 
    { 
     this.stack.insertCards(cards);//Here is the NullReferenceExeption 
    } 
    catch (Exception e) 
    {     
     throw e; 
    } 
} 

public void insertCards(List<Card> cards) 
{ 
    stack.AddRange(cards); 
} 

public List<Card> GetSevenCards() //the Player gets the Cards from this function 
{ 
    List<Card> list = new List<Card>(); 
    int ran; 
    Random r = new Random(); 
    for (int i = 0; i < 7; i++) 
    { 
     ran = r.Next(0, stack.Count()-1); 
     list.Add(stack[ran]); 
     stack.RemoveAt(ran); 
    } 
    return list; 
} 

堆得到的7卡cardlist的實例對象引用未設置到對象

+5

凡定義'stack'? – SwDevMan81 2010-10-07 19:30:22

+3

請發佈簡短但完整的*程序來證明問題;否則我們只是在猜測。見http://tinyurl.com/so-hints – 2010-10-07 19:32:01

回答

0

應該是:

this.stack.insertCards(GetSevenCards()); 

,並創建堆棧的新實例。

因爲卡片爲空。先用功能填充它們。

不能說更多的東西,因爲您沒有提供更多關於定義的信息。應該有更多的代碼。

0

我沒有看到堆棧被初始化。您必須先初始化堆棧,然後才能調用其上的任何非靜態方法。

var stack = new Stack(); 
+0

謝謝...對不起,愚蠢的問題 – hanswurst 2010-10-07 19:44:09

1

你可能需要確保stack被裏面的類實例化:

private YourStackImplementation stack = new YourStackImplementation(); 
+1

-1。這不是一個真正的「堆棧」,因爲.net堆棧沒有像他所定義的.insertCards方法。他寫了他自己的。 – 2010-10-07 19:37:07

+0

那是真正的varname – hanswurst 2010-10-07 19:47:00

相關問題