如何从float复制一个值?浮动,如果浮动,则放零?一片空白?

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的类型不漂浮

fub*_*ubo 5

我认为

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

不可能发生.

  • @ daniell89表达`time.StartPosition.Position.Long ?? 0`是`float`类型,而不是`float?`,所以这里没有任何地方将`float?`赋给`float`. (2认同)
  • @ daniell89你应该粘贴`浮动?test = 1; float result = test ?? 0;`在视觉工作室中看到它有效,我想我无法通过解释说服你. (2认同)