我有这段代码:
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
答案 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 声明为对象类型。否则目前两个变量都是浮点数?类型。