перечисления в C# - присвоение

Как каждый делает это в c#?

Скажем, это myclass имеет:

private enum Days{};


1) Как каждый добавляет данные к перечислению в myclass с помощью конструктора? Как в:

myclass my = new myclass(Monday,Friday);

так, чтобы перечисление в классе получило свойства "Monday, Friday".


2) Можно также сделать свойство для enume в классе, после того как он инициализируется? Например:

my.Days = new enum Days(Tuesday); //where the old settings are replaced.

Править:

То, что я хочу сделать, следует:

Имейте перечисление в основном классе, как перечислимые Дни {в понедельник, во вторник, в среду, в четверг, в пятницу};

У меня также было бы что-то в myclass (перечисление?) так, чтобы я мог присвоить некоторые значения от Дневного перечисления до внутреннего myclass (перечисление?) только с некоторыми, но не всеми значениями в Дневном перечислении.

Так, чтобы я мог получить myclass, который содержит (перечисление?) с "понедельником, во вторник", в то время как некоторый myclass222 содержит (перечисление?) в "пятницу" и т.д.

Я не знаю, является ли перечисление корректным способом сделать эту внутреннюю часть myclass классы?

7
задан Milan 18 March 2010 в 19:24
поделиться

4 ответа

Ваш вопрос несколько расплывчат, но если вы действительно спрашиваете, как построить перечисление, в котором значения могут быть объединены, то ответ заключается в том, чтобы украсить его атрибутом Flags -

[Flags]
public enum Days
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64
}

Теперь, если у вас есть некоторый член типа Days, вы можете присвоить ему объединенное значение:

Days someDays = Days.Monday | Days.Wednesday;

Update
По запросу; вот как проверить, установлено ли определенное значение:

bool wednesdayIsSet = (someDays & Days.Wednesday) == Days.Wednesday;

В ответ на вопрос о том, как создать член перечисления в одном классе, когда перечисление определено в другом классе, это будет выглядеть так:

public class SomeClass
{
    [Flags]
    public enum Days
    {
        None = 0,
        Monday = 1,
        // and so on
    }
}

public class SomeOtherClass
{
    public SomeClass.Days SomeDays { get; set; }
}
11
ответ дан 6 December 2019 в 08:42
поделиться

1) Вы не можете. Перечисление должно быть определено во время компиляции

Похоже, вы могли бы вместо этого искать AttributeCollection. (взгляните на ответ Фредрика Мёрка, это то, о чем я пытался говорить;))

2) my.Days = Days.Tuesday

8
ответ дан 6 December 2019 в 08:42
поделиться

Не могу сказать из вопроса, но, возможно, вы имеете в виду следующее:

  1. Определите перечисление с днями

    public enum Days { Воскресенье, {{1 }} Понедельник, . . . }

  2. Создайте атрибут списка дней в вашем классе

  3. Добавьте необходимые дни в свой список когда они вам понадобятся
2
ответ дан 6 December 2019 в 08:42
поделиться

Кажется, это то, что я хочу сделать. Вопрос в том, если enum Days определено в моем "основном классе", как я могу иметь член Days внутри другого "myclass класса", чтобы что я могу использовать myclass.someDays = Days.Monday?

при условии, что основным классом ur является mainClass, и вы предоставили соответствующие разрешения доступа, а затем в зависимости от определения перечисления, то есть 1. Если он статический, то myclass.someDays = mainClass.Days.Monday; 2. иначе вы должны получить к нему доступ через объект mainClass mainClass mc = new mainClass (); myclass.someDays = mc.Days.Monday;

0
ответ дан 6 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

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