Как каждый делает это в 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 классы?
Ваш вопрос несколько расплывчат, но если вы действительно спрашиваете, как построить перечисление, в котором значения могут быть объединены, то ответ заключается в том, чтобы украсить его атрибутом 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; }
}
1) Вы не можете. Перечисление должно быть определено во время компиляции
Похоже, вы могли бы вместо этого искать AttributeCollection. (взгляните на ответ Фредрика Мёрка, это то, о чем я пытался говорить;))
2) my.Days = Days.Tuesday
Не могу сказать из вопроса, но, возможно, вы имеете в виду следующее:
Определите перечисление с днями
public enum Days { Воскресенье, {{1 }} Понедельник, . . . }
Создайте атрибут списка дней в вашем классе
Кажется, это то, что я хочу сделать. Вопрос в том, если 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;