你调用的对象是空的

时间:2010-10-07 19:28:08

标签: c#

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张卡的卡片列表

3 个答案:

答案 0 :(得分:1)

您可能需要确保在类中实例化stack

private YourStackImplementation stack = new YourStackImplementation();

答案 1 :(得分:0)

应该是:

this.stack.insertCards(GetSevenCards());

并创建堆栈的新实例。

因为卡片为空。首先用功能填充它们。

不能说更多的东西,因为你没有提供更多关于定义的信息。应该有更多的代码。

答案 2 :(得分:0)

我没有看到堆栈被初始化。您必须先初始化堆栈,然后才能在其上调用任何非静态方法。

var stack = new Stack();