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

时间:2017-03-22 10:20:54

标签: c# casting type-conversion

我有这段代码:

StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0

它没有编译错误:

  

无法隐式转换类型'对象'到'浮动'

StartPosLongitude声明如下:float StartPosLongitude;
time.StartPosition.Position.Long由wsdl返回,是float类型吗?并且有时为空。

错误告诉我我正在尝试将对象转换为浮点数,但这不是我正在做的事情 在我看来,我试图将浮动投射到一个物体。

那么为什么编译器会告诉我别的什么呢? 如果这样做的正确方法是什么,我需要将time.StartPosition.Position.Long的值放入StartPosLongitude,但如果time.StartPosition.Position.Long为空则放0。

修改 time.StartPosition.Position.Long的类型是 float?不是float

4 个答案:

答案 0 :(得分:5)

我认为

StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0

应该是

StartPosLongitude = time.StartPosition.Position.Long.HasValue ? time.StartPosition.Position.Long.Value : 0f;

因为time.StartPosition.Position.Long的类型为float? - 否则为

  

但如果time.StartPosition.Position.Long为空,则输入0

不可能发生。

答案 1 :(得分:4)

你可以这样做

StartPosLongitude = time.StartPosition.Position.Long ?? 0

答案 2 :(得分:2)

file:///var/mobile/Containers/Data/Application/D3AB555E-77B3-48E4-9868-9DFA5C4C8973/Documents/cbsapp/d47kndffqc/questionimages/questionImage0015.jpg Failed to load resource

答案 3 :(得分:0)

正如你提到wsdl返回的 time.StartPosition.Position.Long 是浮点数?类型和 StartPosLongitude 也是浮动的?类型。

如果要将float转换为object,它将返回object。但 StartPosLongitude 是浮动的吗? type。因此它生成和编译错误。

如果你想转换那个浮动?对象并分配给 StartPosLongitude 变量。然后将 StartPosLongitude 声明为对象类型。否则目前两个变量都是浮点数?类型。