質問: 1; Console.WriteLine(cards[0].mark); } } class Me //自分の手札を管理するクラス { } class Dealer//ディーラーの手札を管理するクラス { } public class Card//カードの変数を作るためのクラス { public int num; public string mark; } } ``` ### 試したこと 自分で配列を作ってみましたがこのコードだとCard[0].markに"dia"が入ってると思うのですがnullが返ってきました。 書き方の問題かなと思って検索したが見つからなかった(探し方の問題?) ### 補足情報(FW/ツールのバージョンなど) Visual Studioを使っています
回答: classは参照型となります。 ``` Card[] cards = new Card[1]; ``` なので、上記のように定義したclassの配列の中身はそのclassの参照が入ることになります。 配列を作成した時点では、その参照はnullと設定されています。 ``` cards[0] = new Card(); cards[0].mark ="daiya"; ``` と値を代入する前に`cards[0]`に実際のクラスの参照を入れてやらないといけません。 追記 コメントにてマークについて触れていたので・・・ ``` public enum CardMark { Non=0, spade = 1, club = 2, diamond = 3, heart = 4 } public class Card//カードの変数を作るためのクラス { public int num; public CardMark mark; } ``` といった感じで文字列で持つのではなく列挙型を使ったほうがよろしいかと思います。 文字列で持つと ``` if (Card.mark = "spade") ``` といった感じで書いてスペルミスなどでバグを埋め込む原因となったりします。