Немного подправляя некоторые методы, пытаясь создать нечто похожее на первоначальное предложение:
MyEnum cal = Enum.Parse<MyEnum>("value1");
мне показалось, что этот синтаксис не будет возможен в C #, поскольку тип Enum обрабатывается как ненулевой.
Если мы вызываем метод Enum.TryParse, передавая значение, не соответствующее элементу перечисления,
значение Enum по умолчанию будет возвращено в переменной "out". Вот почему мы должны проверить
сначала результат Enum.TryParse, так как просто вызывается
MyEnum cal;
Enum.TryParse<MyEnum>("value1", out cal);
и проверка значения "cal" не всегда дает надежный результат.