2

質問は、本の最後にあるこの質問に提供されている解決策を参照した人を対象としています。この章の最後に概説されているように、Ch10CardLibを設定しました。シャッフルされたデッキを表示する付属のクライアントコンソールアプリケーションを実行しても問題ありません。

次の行でエラーメッセージを取得するために提供されたソリューションを実行しました。

Suit flushSuit = playDeck.GetCard(hand * 5).suit;

「エラー1'Ch10CardLib.Card'には'suit'の定義が含まれておらず、タイプ'Ch10CardLib.Card'の最初の引数を受け入れる拡張メソッド'suit'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか? )」

「Suit」は列挙型ですが、「suit」はCardクラスのプライベート読み取り専用フィールドです。

誰かがここで作者の意図を神聖にすることができますか?

「楽しみ」のために、Cardクラスにメソッドを含めることにしました。

public Suit Suit()
{
    return suit;
}

Suit flushSuit = playDeck.GetCard(hand * 5).Suit();

これは望ましい結果を生み出しますが、それは文脈の精神に基づいているのでしょうか?

4

1 に答える 1

4

これは構文エラーです。本のコードがコンパイルされない場合(私は本のコピーを持っていません)、それはあなたのせいではありません。あなたの修正は私には完全に合理的に見えますが、私はおそらくそれをメソッドではなく読み取り専用プロパティとして公開したでしょう:

public Suit Suit
{
    get { return suit; }
}

おそらく、プライベート読み取り専用フィールドを自動プロパティと交換できますか?

public Suit Suit { get; private set; }
于 2013-03-03T13:42:55.117 に答える