我有这样一段代码为什么?:操作符要求显式强制转换?
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