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



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



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


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



card_suits suit;


без ссылки на класс, в котором он находится?

547   6  

6 ответов:

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

вам нужно определить перечисление вне класса.

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

public class Card
{
     // ...

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

просто объявите перечисление за пределами класса. Вот так:

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

public class Card
{
    ...
}

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

просто объявите его вне определения класса.

Если имя вашего пространства имен X, вы сможете получить доступ к значениям перечисления по X. card_suit

Если вы не определили пространство имен для этого перечисления, просто вызовите их по card_suit.Клубы и т. д.

переместить определение перечисления за пределы класса, но в пределах текущего пространства имен. Объявление его общедоступным делает его глобально доступным оттуда. Есть хороший пример, предложенный www.LearnVisualStudio.Net видео для 'Learning C# for beginners'. Я думаю, что это также доступно по адресу www.microsoftvirtualacademy.com под тем же C# для начинающих серий.

сказав, пожалуйста, используйте соглашение об именовании случаев Pascal или Carmel, чтобы сделать ваш код читаемым и избежать двусмысленности. например CardSuit является предпочтительным.

Я думаю, что это то, что вы хотите.

using card_suits = Card.card_suits;

Comments

    Ничего не найдено.