我遇到問題,試圖從值字典中設置一堆數值表單控件。我希望能夠在嘗試設置數值控件的值之前檢查相應的鍵是否存在於字典中。如何禁止三元運算符評估未執行的結果
我的問題是,三元運算符評估兩個結果表達式,即使只有其中一個將被使用。這會從Dictionary中拋出一個「Key not found」異常。
只有相應的鍵存在(如果不是0),是否有一種簡單的方法可以將數字表單控件設置爲字典中的值?
(Position
是enum
和MyCoordinate
是包含軸的列表中struct
)
Dictionary<Position, MyCoordinate> pos = DataManager.Instance.ToolChanger.GetPositionCoordinates();
pos1TNumeric.Value = pos.ContainsKey(Position.ElectrodePosition01) ? 0M : (decimal)pos[Position.ElectrodePosition01].Axes[EDMAxis.T];
pos2TNumeric.Value = pos.ContainsKey(Position.ElectrodePosition02) ? 0M : (decimal)pos[Position.ElectrodePosition02].Axes[EDMAxis.T];
pos3TNumeric.Value = pos.ContainsKey(Position.ElectrodePosition03) ? 0M : (decimal)pos[Position.ElectrodePosition03].Axes[EDMAxis.T];
pos4TNumeric.Value = pos.ContainsKey(Position.ElectrodePosition04) ? 0M : (decimal)pos[Position.ElectrodePosition04].Axes[EDMAxis.T];
pos5TNumeric.Value = pos.ContainsKey(Position.ElectrodePosition05) ? 0M : (decimal)pos[Position.ElectrodePosition05].Axes[EDMAxis.T];
我目前的解決方案很可能將只是使傳遞的辭典鍵的包裝功能,並返回正確的十進制值。我想知道是否有更簡單的方法。謝謝!
'三元運算符評估兩個結果表達式,即使只有其中一個將被使用'這是錯誤的。它沒有這樣的事情。如果該操作數正在被評估,那麼這就是正在採取的路徑。 – Servy
看起來像我是一個白癡,忘了顛倒我的結果....無視這個問題... – EMUEVIL
@Servy你是完全正確的,我忘了顛倒我的結果 – EMUEVIL