当我尝试在 Deck 类中调用我的 ToString() 方法时,它给了我一个“NullReferenceException 未处理”错误。做了一些测试,我发现当它试图调用Deck.ToString()方法时,大小设置为0。它应该是在调用构造函数时设置的,我不知道在重置什么它。
主要方法:
public class DeckTest
{
public static void Main()
{
Deck toTest = null;
Console.WriteLine("What type of Deck would you like to create?");
toTest = new Deck(Console.ReadLine());
Console.WriteLine(toTest);
}
}
甲板类:
class Deck
{
String type;
int size;
String deckList;
Card[] deck;
public Deck(String type, int size)
{
deck = new Card[size];
this.type = type;
this.size = size;
while (deck[size - 1] == null)
{
Card newCard;
Console.WriteLine("Please Enter the Type, Name, Colour (if card has no Colour, enter 'Colourless'), Colour Identity, Text, Mana Cost (if applicable), Converted Mana Cost (if applicable), Power (if applicable), Toughness (if applicable), separated by semicolons.");
String line = Console.ReadLine();
string[] card = line.Split(';');
if (card[0].Equals("Land", StringComparison.OrdinalIgnoreCase))
{
newCard = new Card(card[0], card[1], card[3], card[4]);
}
else if (card[0].Equals("creature", StringComparison.OrdinalIgnoreCase))
{
newCard = new Card(card[0], card[1], card[2], card[3], card[4], card[5], int.Parse(card[6]), int.Parse(card[7]), int.Parse(card[8]));
}
else
{
newCard = new Card(card[0], card[1], card[2], card[3], card[4], card[5], int.Parse(card[5]));
}
addCard(newCard);
}
}
public Deck(String type)
{
if (type.Equals("Standard", StringComparison.OrdinalIgnoreCase))
{
new Deck(type, 60);
}
else if (type.Equals("Extended", StringComparison.OrdinalIgnoreCase))
{
new Deck(type, 60);
}
else if (type.Equals("Modern", StringComparison.OrdinalIgnoreCase))
{
new Deck(type, 60);
}
else if (type.Equals("Commander", StringComparison.OrdinalIgnoreCase)|| type.Equals("EDH", StringComparison.OrdinalIgnoreCase))
{
new Deck(type, 100);
}
}
void addCard (Card newCard)
{
int count = 0;
while (deck[count] != null && count < size)
{
count++;
}
if (count < size)
{
deck[count] = newCard;
}
else
{
Console.WriteLine("This deck is full.");
}
}
public override string ToString()
{
String output = "";
int count = 0;
while (deck[count] != null && count < size-1)
{
output += deck[count] + "/n";
}
return output;
}
}