С# Public Enums в классах
У меня есть программа с классом, которая содержит публичное перечисление, следующим образом:
public class Card
{
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
...
Я хочу использовать это в другом месте в моем проекте, но не могу этого сделать, не используя Card.card_suit. Кто-нибудь знает, есть ли способ в С# объявить это, чтобы я мог объявить
card_suits suit;
Без ссылки на класс, который он в?
Ответы
Ответ 1
В настоящее время ваш enum
вложен внутри вашего класса Card
. Все, что вам нужно сделать, это переместить определение enum
вне класса:
// A better name which follows conventions instead of card_suits is
public enum CardSuit
{
Clubs,
Hearts,
Spades,
Diamonds
}
public class Card
{
}
Чтобы указать:
Было предложено изменить имя от card_suits
до CardSuit
, потому что рекомендации Microsoft предлагают Pascal Case для перечислений, а особая форма более описательна в этом случае (поскольку множественное число предполагает, что вы храните несколько значений перечисления ORing их вместе).
Ответ 2
Вам нужно определить enum вне класса.
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
public class Card
{
// ...
При этом вы также можете рассмотреть возможность использования стандартных правил именования для Enums, который будет CardSuit вместо card_suits, поскольку Предлагается оболочка Паскаля, и перечисление не помечено FlagsAttribute, предполагая, что несколько значений подходят для одной переменной.
Ответ 3
Просто объявите enum за пределами класса. Вот так:
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
public class Card
{
...
}
Помните, что перечисление - это тип. Вы также можете подумать о том, чтобы перечислить в свой файл, если он будет использоваться другими классами. (Вы программируете карточную игру, и костюм является очень важным атрибутом карты, который в хорошо структурированном коде должен быть доступен по нескольким классам.)
Ответ 4
Просто объявите это вне определения класса.
Если ваше имя пространства имен X, вы сможете получить доступ к значениям перечисления с помощью X.card_suit
Если вы не определили пространство имен для этого перечисления, просто назовите их card_suit.Clubs и т.д.
Ответ 5
Переместите определение перечисления вне класса, но в пределах текущего пространства имен. Объявление его как общедоступного делает его доступным по всему миру. Существует хороший пример, предлагаемый видео www.LearnVisualStudio.Net для "Learning С# для начинающих". Я думаю, что это также доступно на www.microsoftvirtualacademy.com под тем же С# для начинающих серий.
Сказав, пожалуйста, используйте соглашение об именах Pascal или Carmel Case, чтобы сделать ваш код доступным для чтения и избежать двусмысленности. например, CardSuit является предпочтительным.
Ответ 6
Я думаю, что это то, что вы хотите.
using card_suits = Card.card_suits;