Подтвердить что ты не робот

С# Public Enums в классах

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

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

Я хочу использовать это в другом месте в моем проекте, но не могу этого сделать, не используя Card.card_suit. Кто-нибудь знает, есть ли способ в С# объявить это, чтобы я мог объявить

card_suits suit;

Без ссылки на класс, который он в?

4b9b3361

Ответ 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;