我有一個WPF窗口派生類中以下屬性定義:怪異enum.TryParse行爲
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;
}
}
函數總是返回null。所以我想,我會介入它,看看發生了什麼。那麼,事實證明,該方法的TryParse總是返回false(即,使得第二的身體如果要執行的語句,因此返回null)。我看的字符串值,看看它實際上是枚舉的有效值果然是。即使將有效字符串發送到TryParse時,爲什麼解析始終會失敗?
這裏是枚舉定義:
enum Side
{
Buy,
Sell
}
更新:OK傢伙,一定LOL時刻在這裏。原來,的SelectedValue真的返回了枚舉本身,而不是一個字符串,但是當我在調試器中查看它總是含蓄地將其轉換爲字符串。最後,閱讀您的意見後,我決定以實際雙擊在監視窗口中的價值,才發現我的恐懼,該值是MyApp.Side.Sell - 一個枚舉,而不是一個字符串。所以,粉筆另一個用於檢查as
結果爲非空!
檢查SideComboBox.SelectedValue的'返回值作爲string'仔細... – 2012-02-28 22:15:03
你檢查作爲string''SideComboBox.SelectedValue的價值? – remio 2012-02-28 22:15:45
請參閱更新並感謝球員! – 2012-02-28 22:19:28