2013-03-03 2 views
2

Вопрос для всех, кто ссылался на решение, предоставленное для этого вопроса в конце книги. Я установил Ch10CardLib, как описано в конце главы. Запуск прилагаемого клиентского консольного приложения, отображающего перетасованную колоду, не представляет проблемы.Watson и др.: Visual C# Глава 10 Упражнение 5

Я запустил решение при условии, чтобы получить сообщение об ошибке на следующую строке:

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

«Ошибка 1„Ch10CardLib.Card“не содержит определение для„костюма“и нет методы расширения «костюм» принимая первый аргумент типа «Ch10CardLib.Card» может быть найден (вы пропали без вести с помощью директивы или ссылка на сборку?)»

„костюм“является перечисление, но„костюм“является личное поле readonly в классе Card.

Может ли кто-нибудь угадать намерение автора здесь?

Просто для «весело» Я решил включить метод в классе карты:

public Suit Suit() 
{ 
    return suit; 
} 

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

Это производит желаемый результат, но это в духе контекста?

ответ

4

Это синтаксическая ошибка. Если код в книге не компилируется (у меня нет копии книги), это не ваша вина. Ваш затруднительный выглядит вполне разумной для меня, хотя я бы, вероятно, выставил его как только для чтения собственности, а не метод:

public Suit Suit 
{ 
    get { return suit; } 
} 

Может быть, вы могли бы обменять частное поле только для чтения для автоматического свойства?

public Suit Suit { get; private set; } 
+0

Спасибо, это гораздо лучшая идея. Странно, что этот текст был рекомендован Microsoft, но не использовался в качестве текста университета, или его наверняка подобрали бы до ... –

+0

@ LaurieStearn, не стоит беспокоиться. Добро пожаловать в переполнение стека :) –

Смежные вопросы