Иногда, бывает очень удобно возвращать результат работы сервис-метода в качестве Enum значения. Представим ситуацию: Вы пишите сервис-метод, который возвращает два возможных состояния true/false (область значений), как бы Вы поступили, ограничились бы стандартным типом Bool или все-таки ввели бы новый Enum? Идея оставить Bool не совсем удачна, если вдруг придется расширить область значений сервис-метода. Например, в задаче аутентификации пользователя, где помимо информации об удаче/неудаче необходимо указать, в чем состоит неудача аутентификации, в итоге получим 4 возможных результата: "успех" (Ok), "провал" (Fail), "логин не верен" (LoginIncorrect), "пароль не верен" (PasswordIncorrect):
// Результат аутентификации
enum LoginStatus
{
// Успех
Ok = 0,
// Провал
Fail = (2 << 1),
// Уточняем, в чем провал:
LoginIncorrect = (2 << 2),
PasswordIncorrect = (2 << 3)
}