Gui*_*doG 1 c# casting type-conversion
我有这个代码:
StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0
Run Code Online (Sandbox Code Playgroud)
它没有编译错误:
无法将类型'object'隐式转换为'float'
StartPosLongitude声明如下:float StartPosLongitude;
time.StartPosition.Position.Long由wsdl返回,是float类型?并且有时为空.
错误告诉我我正在尝试将对象转换为浮点数,但这不是我正在做的事情.
在我看来,我试图将浮动投射到一个物体.
那么为什么编译器会告诉我别的什么呢?
什么是正确的方法,我需要将值time.StartPosition.Position.Long放入,StartPosLongitude但如果time.StartPosition.Position.Long为null 则放0 .
编辑 time.StartPosition.Position.Long是float的类型?不漂浮
我认为
StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0
Run Code Online (Sandbox Code Playgroud)
应该
StartPosLongitude = time.StartPosition.Position.Long.HasValue ? time.StartPosition.Position.Long.Value : 0f;
Run Code Online (Sandbox Code Playgroud)
因为time.StartPosition.Position.Long是类型float?- 否则
但如果time.StartPosition.Position.Long为null,则输入0
不可能发生.