У меня есть следующее определение свойства внутри производного класса окна WPF:
internal Side? Side
{
get
{
if (SideComboBox.SelectedIndex==-1)
return null;
Side side;
if (!Enum.TryParse(SideComboBox.SelectedValue as string, out side))
return null;
return side;
}
}
Функция всегда возвращает ноль. Итак, я думаю, я зайду в это и посмотрю, что происходит. Что ж, получается, что метод TryParse всегда возвращает false (т. Е. Вызывает выполнение тела второго оператора if и, таким образом, возвращает null). Я смотрю на значение строки, чтобы увидеть, действительно ли оно является допустимым значением для перечисления и достаточно ли оно верно. Почему синтаксический анализ всегда дает сбой, даже когда в TryParse отправляются действительные строки?
Вот определение enum:
enum Side
{
Buy,
Sell
}
Обновление : ОК, ребята, определенный момент LOL здесь. Оказывается, что SelectedValue фактически возвращает само перечисление, а не строку, но когда я просматриваю его в отладчике, оно всегда неявно преобразует его в строку. Наконец, после прочтения ваших комментариев, я решил дважды щелкнуть значение в окне просмотра, чтобы, к своему ужасу, обнаружить, что это значение MyApp.Side.Sell - перечисление, а не строка. Итак, нарисуйте еще один, чтобы проверить, что результат as
не равен нулю!