Я видел где-то (больше не могу найти), чтобы вы могли проверить наличие значения перечисления из элемента перечисления с определенным списком элементов. Ex. ниже - «Доступно = doc | xls | csv»C# Enum validate from list of values
Но следующий код не работает. Я ожидаю, что результаты будут равны = xls вместо doc, так как они находятся в списке значений «Доступные».
Может кто-нибудь помочь?
Заранее благодарен!
Niki
Кнопка Код:
protected void btnTest01_Click(object sender, EventArgs e)
{
TestEnum01 result1 = TestEnum01.xls;
TestEnum02 result2 = TestEnum02.xls;
TestEnum03 result3 = TestEnum03.xls;
if (result1 != TestEnum01.Available)
{
result1 = TestEnum01.doc;
}
if (result2 != TestEnum02.Available)
{
result2 = TestEnum02.doc;
}
if (result3 != TestEnum03.Available)
{
result3 = TestEnum03.doc;
}
this.txtTest01_Results.Text =
String.Format("01: Result = {0}, Available = {1}\r\n\r\n02: Result = {2}, Available = {3}\r\n\r\n03: Result = {4}, Available = {5}",
result1.ToString(), TestEnum01.Available,
result2.ToString(), TestEnum02.Available,
result3.ToString(), TestEnum03.Available);
}
Перечисления
public enum TestEnum01
{
doc = 1,
txt = 2,
xls = 4,
csv = 8,
unknown = 5,
Available = doc | xls | csv
}
public enum TestEnum02
{
doc,
txt,
xls,
csv,
unknown,
Available = doc | xls | csv
}
public enum TestEnum03
{
doc,
txt,
xls,
csv,
unknown,
Available = TestEnum03.doc | TestEnum03.xls | TestEnum03.csv
}
РЕЗУЛЬТАТЫ:
01: Result = doc, Available = Available
02: Result = doc, Available = csv
03: Result = doc, Available = csv
Непонятно, в чем ваш вопрос. Не могли бы вы объяснить это лучше? Также эти 3 перечисления запутывают. Они показывают ваши попытки или ...? –
Мой вопрос: могу ли я проверить элемент перечисления, если он существует, используя другой элемент перечисления со списком значений. В приведенном выше примере я проверяю ifof TestEnum01.xls в списке значений в TestEnum01.Available. Но «if (result1! = TestEnum01.Available)», похоже, не работает. –
Использовать метод HasFlag 'if (result.HasFlag (TestEnum01.xls))' и получить хорошее преобразование «ToString», использовать 'FlagsAttribute' –