Доступ и проверка записей из перечисления в C# - PullRequest
0 голосов
/ 07 марта 2020

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

public enum Items
{
   Fruits,
   Nuts,
   Chocolate
}

И у меня есть метод в другом классе, у которого аргумент перечисления имеет значение, например

public void Method(Items item)

В методе Я хочу оценить переданное перечисление, что-то вроде:

if(item == "Fruit")
{
  print("Something");
}

Но так как записи перечисления не являются строками, я не могу этого сделать. Есть ли способ выполнить вышеуказанную операцию элегантно?

Ответы [ 3 ]

0 голосов
/ 07 марта 2020

Самое простое решение - использовать item.ToString ().

Другое решение, которое вы можете найти здесь: как сравнить строку с перечислением в C#

Надеюсь, я помог

0 голосов
/ 07 марта 2020

Это работает.

if (item == Items.Fruits)

Я действительно не фанат ответов ToString(), поскольку вы создаете строку без причины.

По умолчанию Enum поддерживается Int32. Таким образом, вы также можете сравнивать с использованием приведений типа (int)Items.Fruits, если хотите.

Имейте в виду, что это не сработает, если вы используете атрибут [Flags] в Enum.

.
0 голосов
/ 07 марта 2020

Попробуйте, если хотите сравнить со строкой

if(item.ToString().Equals("Fruit"))
{
  print("Something");
}

Или даже лучше использовать регистр переключателя для сравнения с самим перечислением.

switch(item) {
    case Items.Fruits:
          Console.Writeline("something");
           break;
    case Items.Nuts:
          Console.Writeline("something else");
           break;
    default:
          Console.writeline("something else 2");
           break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...