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;在visual studio中编写>并查看它是否有效,我想我无法仅通过解释就说服您。编译器无法识别。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?