Был ли у вас день, когда ничего не работает?Теперь я даже не могу установить значение перечисления!
У меня были проблемы с оператором Enum.Parse
внизу, поэтому я написал над ним блок 'if'.К моему удивлению, это тоже не удалось.
Я проследил это с помощью отладчика.Значение строки x
равно «OnDemand».Первая «истинная» ветвь «if» берется, но bitmapCacheOption
остается BitmapCacheOption.Default
.
То же самое для выражения Enum.Parse
ниже.Итак, мой вопрос: Что я делаю неправильно при присвоении значения перечислению?
BitmapCacheOption bitmapCacheOption;
if (x == "OnDemand") bitmapCacheOption = BitmapCacheOption.OnDemand;
else
{
if (x == "OnLoad") bitmapCacheOption = BitmapCacheOption.OnLoad;
else
{
if (x == "None") bitmapCacheOption = BitmapCacheOption.None;
else bitmapCacheOption = BitmapCacheOption.Default;
}
}
BitmapCacheOption bitmapCacheOption1 =
(BitmapCacheOption)Enum.Parse(typeof(BitmapCacheOption), x, false);
Debug.Assert(bitmapCacheOption == bitmapCacheOption1);
Редактировать : Перечисление в вопросе является WPF, BitmapCacheOption .Значение false в конце оператора Enum.Parse, равное , означает , чтобы игнорировать регистр.Я знаю о лучших способах написания каскадных операторов if (включая операторы else if и switch), но все это не относится к проблеме.Я написал «если» таким образом во время отладки, чтобы позволить мне перейти к отладчику.Важно то, что даже при простом условии, если x равен «OnDemand», bitmapCacheOption остается BitmapCacheOption.Default!
edit : обратите внимание на значение «bitmapCacheOption» в окне Locals отладчика - оно остается в «Default», даже если желтая подсветка показывает, что случай «OnDemand» был взят!
