Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简写if+;可空类型(C#)_C#_Conditional Operator - Fatal编程技术网

简写if+;可空类型(C#)

简写if+;可空类型(C#),c#,conditional-operator,C#,Conditional Operator,以下是报告 无法确定条件表达式的类型,因为“double”和“”之间没有隐式转换 为什么我不能只使用AulLable BooL而不是与AdouBLE的往返,是因为AULLABEDUBLE是生成的EngType框架类的一个属性,它不能用作OutPar。 aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null) 只需将语法扩展为完整语法,而不是简写。。。这样

以下是报告

无法确定条件表达式的类型,因为“double”和“”之间没有隐式转换


为什么我不能只使用AulLable BooL而不是与AdouBLE的往返,是因为AULLABEDUBLE是生成的EngType框架类的一个属性,它不能用作OutPar。

aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null)

只需将语法扩展为完整语法,而不是简写。。。这样更容易阅读:

aNullableDouble = null;
if (double.TryParse(aString, out aDouble))
{
    aNullableDouble = aDouble;
}
.NET支持,但通过声明它们,您必须以不同的方式对待它们(可以理解,现在通常是值类型的东西有点像引用)


如果您最终不得不在可空双精度和常规双精度之间进行太多转换,那么这也可能没有多大帮助。。。自动生成的类集可能很容易出现这种情况。

使用可空类型的有趣的副作用是,如果出现以下情况,就不能真正使用速记。速记IF必须从两个条件返回相同的类型,并且在两种情况下都不能为null。所以,强制转换或写出:)

newnullabled()?!这不是双倍的吗?语法是为了什么?!是的,那也行。我的更显式,但两种形式将生成相同的代码。
aNullableDouble = double.TryParse(aString, out aDouble) ? (double?)aDouble : null;
aNullableDouble = null;
if (double.TryParse(aString, out aDouble))
{
    aNullableDouble = aDouble;
}