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 回答