C# 如何从float复制值?浮起,如果浮起,则置零?是空的吗?

C# 如何从float复制值?浮起,如果浮起,则置零?是空的吗?,c#,casting,type-conversion,C#,Casting,Type Conversion,我有以下代码: StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0 它不会编译时出错: 无法将类型“object”隐式转换为“float” startposlongite的定义如下:float startposlongite time.StartPosition.Position.Long由wsdl返回,类型为float?有时是空的 该错误告诉我,我正在尝试将对象转换为浮点,但这不是我正在做的。 在我看来,我正试图

我有以下代码:

StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0
它不会编译时出错:

无法将类型“object”隐式转换为“float”

startposlongite的定义如下:
float startposlongite
time.StartPosition.Position.Long由wsdl返回,类型为float?有时是空的

该错误告诉我,我正在尝试将对象转换为浮点,但这不是我正在做的。
在我看来,我正试图向一个物体投掷浮标

那么为什么编译器会告诉我其他的事情呢?
正确的方法是什么,我需要将
time.StartPosition.Position.Long
的值放入
StartPosition.Long
中,但如果
time.StartPosition.Position.Long
为空,则输入0

编辑 time.StartPosition.Position.Long是浮动类型?不是浮动类型

我认为

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

不可能。我想

StartPosLongitude = (object)time.StartPosition.Position.Long ?? 0
 StartPosLongitude = time.StartPosition.Position.Long != null ? (float)time.StartPosition.Position.Long : 0f;
应该是

StartPosLongitude = time.StartPosition.Position.Long.HasValue ? time.StartPosition.Position.Long.Value : 0f;
因为
time.StartPosition.Position.Long
float?
的类型,否则

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


不可能。你可以这样做

 StartPosLongitude = time.StartPosition.Position.Long != null ? (float)time.StartPosition.Position.Long : 0f;
StartPosLongitude = time.StartPosition.Position.Long ?? 0

你可以这样做

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

正如您提到的,wsdl返回的time.StartPosition.Position.Long是float吗?类型和startPoslongity是否也是浮动的?类型

若要将float强制转换为object,它将返回object。但是开始的长度是浮动的吗?因此,它会导致生成和编译错误


如果你想转换那个浮点数?对象并指定给startposlongite变量。然后将startposlongite声明为对象类型。否则当前两个变量都是float?键入。

正如您提到的,wsdl返回的time.StartPosition.Position.Long是float?类型和startPoslongity是否也是浮动的?类型

若要将float强制转换为object,它将返回object。但是开始的长度是浮动的吗?因此,它会导致生成和编译错误



如果你想转换那个浮点数?对象并指定给startposlongite变量。然后将startposlongite声明为对象类型。否则当前两个变量都是float?键入。

浮点值怎么可以为空?仅当类型为可为null的float(float?)时,才可以为null,surely@fubo在这个问题中,您可以发现它是float类型,只需删除
(object)
cast(为什么会在那里?)。如果
time.StartPosition.Position.Long
float
,它就不能是
null
。如果您的数据中可以有
null
,那么它应该是
null
(与
float?
相同)。让我帮助您理解为什么会出现编译器错误“无法隐式地将类型“object”转换为“float”。您可以使用
(对象)
强制转换将行的右侧强制转换为
对象的类型。然后将该
对象
传递给
startposlongite
,该对象的类型似乎是
float
。不能这样做,不能将
对象
放入
浮点
变量中。如果删除
(对象)
强制转换,错误应该会消失。浮点值怎么可能为空?仅当类型为可为null的float(float?)时,才可以为null,surely@fubo在这个问题中,您可以发现它是float类型,只需删除
(object)
cast(为什么会在那里?)。如果
time.StartPosition.Position.Long
float
,它就不能是
null
。如果您的数据中可以有
null
,那么它应该是
null
(与
float?
相同)。让我帮助您理解为什么会出现编译器错误“无法隐式地将类型“object”转换为“float”。您可以使用
(对象)
强制转换将行的右侧强制转换为
对象的类型。然后将该
对象
传递给
startposlongite
,该对象的类型似乎是
float
。不能这样做,不能将
对象
放入
浮点
变量中。如果删除
(对象)
强制转换,错误应该会消失。编译器无法识别.hasvalue只执行
StartPosition=time.StartPosition.Position.Long??0
@daniell89表达式
time.StartPosition.Position.Long??0
的类型是
浮点
,而不是
浮点?
,因此这里没有将
浮点?
赋值给
浮点
。编译器怎么可能无法识别
。HasValue
@daniell89您应该粘贴
float?测试=1;浮动结果=测试??0;并查看它是否有效,我想我无法仅通过解释就说服您。编译器无法识别。hasvalue仅执行
startposlongite=time.StartPosition.Position.Long??0
@daniell89表达式
time.StartPosition.Position.Long??0
的类型是
浮点
,而不是
浮点?
,因此这里没有将
浮点?
赋值给
浮点
。编译器怎么可能无法识别
。HasValue
@daniell89您应该粘贴
float?测试=1;浮动结果=测试??0;在VisualStudio中,看到它的工作原理,我想我不能仅仅通过解释就说服你。不,StartPosLongite是float不是float?不,StartPosLongite是float不是float?