Предположим, у меня есть перечисление :
namespace System.Windows.Forms
{
public enum DialogResult { None, OK, Cancel, Abort, Retry, Ignore, Yes, No }
}
я хочу объявить "набор" , составленный из перечисленных типов
ShowForm(Form frm, DialogResults allowedResults)
На других языках вы бы заявили:
public DialogResults = set of DialogResult;
И тогда я могу использовать
ShowForm(frm, DialogResult.OK | DialogResult.Retry);
C # имеет понятие Флаги , псевдокод:
[Flags]
public enum DialogResults { DialogResult.None, DialogResult.OK, DialogResult.Cancel, DialogResult.Abort, DialogResult.Retry, DialogResult.Ignore, DialogResult.Yes, DialogResult.No }
проблема в том, что это не настоящий код - Flags
не указывает компилятору создавать набор флагов.
- в одном случае тип должен разрешать только одно значение (
DialogResult
)
- в другом случае тип должен разрешать несколько значений выше (
DialogResults
)
Как мне получить "набор" перечисляемых типов?
Примечание : я предполагаю, что это невозможно в C #. Если это ответ: можно так сказать - на вопрос дан ответ.
Примечание : Только то, что я считаю, что в языке C # нет функции, не означает, что у нее нет функции - возможно, я просто еще не нашел ее.
Обновление: Другой пример:
Предположим, у меня есть перечисление:
public enum PatronTier
{
Gold = 1,
Platinum = 2,
Diamond = 3,
SevenStar = 7 //Yes, seven
}
я хочу объявить "набор" , составленный из перечисленных типов
public Tournament
{
public PatronTiers EligibleTiers { get; set; }
}
На других языках вы бы заявили:
public PatronTiers = set of PatronTier;
И тогда я могу использовать:
tournament.EligibleTiers = PatronTier.Gold | PatronTier.SevenStar;
C # имеет понятие Флаги , псевдокод:
[Flags]
public enum PatronTiers { PatronTier.Gold, PatronTier.Platinum, PatronTier.Diamond, PatronTier.SevenStar }
проблема в том, что это не настоящий код.
Как мне получить "набор" перечисляемых типов?