У меня есть программа с классом, который содержит общедоступное перечисление, следующим образом:
public class Card
{
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
...
Я хочу использовать это в другом месте в моем проекте, но не могу сделать этого, не используя Карту card_suit. Делает любой знает, существует ли путь в C# для объявления этого так, чтобы я смог объявить
card_suits suit;
Не ссылаясь на класс, в котором это находится?
В настоящее время ваше перечисление
вложено в ваш класс 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 предлагает регистр Паскаля для перечислений, а форма единственного числа более наглядна в этом случае (поскольку множественное число предполагает, что вы сохраняете несколько значений перечисления, объединяя их вместе с оператором ИЛИ).
Вам необходимо определить перечисление вне класса.
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
public class Card
{
// ...
При этом вы также можете рассмотреть возможность использования стандартных рекомендаций по именованию для Enums , которые будут CardSuit вместо card_suits, поскольку предлагается Pascal Casing, а перечисление не помечено FlagsAttribute , предлагая несколько значений, подходящих для одной переменной.
Просто объявите перечисление вне границ класса. Примерно так:
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
public class Card
{
...
}
Помните, что перечисление - это тип. Вы также можете рассмотреть возможность помещения перечисления в отдельный файл, если оно будет использоваться другими классами. (Вы программируете карточную игру, и масть - очень важный атрибут карты, который в хорошо структурированном коде должен быть доступен ряду классов.)