简写if+;可空类型(C#)
以下是报告 无法确定条件表达式的类型,因为“double”和“”之间没有隐式转换简写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) 只需将语法扩展为完整语法,而不是简写。。。这样
为什么我不能只使用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;
}