Существует случай, что другие ответы здесь не упоминается, что может помочь другим s.
С C# базовый тип перечисления является интегралом. Поскольку это интеграл, вы можете логически или перечислить вместе.
При использовании любого из приведенных выше методов для равенства не удастся, если перечисления логически совпадают.
Так что для некоторых особых случаев, таких как использование перечислений в виде флагов, вам нужно будет логически и к тому случаю, с которым вы тестируете, прежде чем проверять равенство.
if ((enumInstance & MyEnum.SomeValue).Equals(MyEnum.SomeValue))
или
if ((enumInstance & MyEnum.SomeValue) == MyEnum.SomeValue)
Строго говоря, это безопаснее использовать "==" с перечислениями.
Полный список возможных типов перечислений можно найти здесь: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
Я чувствую, что это, вероятно, был дан ответ раньше, я просто не могу найти где. Если он был дан ответ, дайте мне знать, и я удалю этот вопрос – ToddBFisher
в значительной степени * каждый * вопрос, заданный на SO, был задан здесь раньше ... должен быть значок для запроса поистине уникального вопроса. –
http://stackoverflow.com/questions/814878/c-sharp-difference-between-and-equals – jAC