Deck クラスで ToString() メソッドを呼び出そうとすると、「NullReferenceException was unhandled」というエラーが表示されます。いくつかのテストを行ったところ、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;
}
}