我有這樣一段代碼爲什麼?:操作符要求顯式強制轉換?
StateMachine.State = string.IsNullOrEmpty(MyString) ?
(IState) StateMachine.StateA : StateMachine.StateB;
我也可以寫爲
if (string.IsNullOrEmpty(MyString))
StateMachine.State = StateMachine.StateA;
else
StateMachine.State = StateMachine.StateB;
State
是IState
類型和StateA
和StateB
都實現IState
的。
在第一個片段中,編譯器要求顯式強制轉換,而在第二個片段中不需要。爲什麼在第一個例子中需要?編號: 建議的重複問題並不能完全覆蓋我的問題。我的問題是關於對象和接口,而另一個問題是關於原始數據類型和常量。 特別是關於聲明的quetzalcoatl的建議是非常有價值的。
閱讀關於建議的重複問題的答案永遠不會指向這個方向。
就是這樣!一個非常好的建議將我的StateA和StateB的聲明更改爲IState。非常感謝你! – ffonz