Перечисления общественности C# в классах

У меня есть программа с классом, который содержит общедоступное перечисление, следующим образом:

public class Card
{
    public enum card_suits
    {
        Clubs,
        Hearts,
        Spades,
        Diamonds
    }
...

Я хочу использовать это в другом месте в моем проекте, но не могу сделать этого, не используя Карту card_suit. Делает любой знает, существует ли путь в C# для объявления этого так, чтобы я смог объявить

card_suits suit;

Не ссылаясь на класс, в котором это находится?

61
задан Paul Michaels 29 March 2010 в 19:56
поделиться

3 ответа

В настоящее время ваше перечисление вложено в ваш класс 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 предлагает регистр Паскаля для перечислений, а форма единственного числа более наглядна в этом случае (поскольку множественное число предполагает, что вы сохраняете несколько значений перечисления, объединяя их вместе с оператором ИЛИ).

125
ответ дан 24 November 2019 в 17:05
поделиться

Вам необходимо определить перечисление вне класса.

public enum card_suits
{
    Clubs,
    Hearts,
    Spades,
    Diamonds
}

public class Card
{
     // ...

При этом вы также можете рассмотреть возможность использования стандартных рекомендаций по именованию для Enums , которые будут CardSuit вместо card_suits, поскольку предлагается Pascal Casing, а перечисление не помечено FlagsAttribute , предлагая несколько значений, подходящих для одной переменной.

25
ответ дан 24 November 2019 в 17:05
поделиться

Просто объявите перечисление вне границ класса. Примерно так:

public enum card_suits
{
    Clubs,
    Hearts,
    Spades,
    Diamonds
}

public class Card
{
    ...
}

Помните, что перечисление - это тип. Вы также можете рассмотреть возможность помещения перечисления в отдельный файл, если оно будет использоваться другими классами. (Вы программируете карточную игру, и масть - очень важный атрибут карты, который в хорошо структурированном коде должен быть доступен ряду классов.)

11
ответ дан 24 November 2019 в 17:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: