以下返回
无法确定条件表达式的类型,因为 'double' 和 '<null>' 之间没有隐式转换
aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null)
我不能只使用 aNullableBool 而不是使用 aDouble 往返的原因是因为 aNullableDouble 是生成的 EntityFramework 类的属性,它不能用作 out par。
以下返回
无法确定条件表达式的类型,因为 'double' 和 '<null>' 之间没有隐式转换
aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null)
我不能只使用 aNullableBool 而不是使用 aDouble 往返的原因是因为 aNullableDouble 是生成的 EntityFramework 类的属性,它不能用作 out par。
aNullableDouble = double.TryParse(aString, out aDouble) ? (double?)aDouble : null;
只需将语法吹成完整的语法而不是速记......它会更容易阅读:
aNullableDouble = null;
if (double.TryParse(aString, out aDouble))
{
aNullableDouble = aDouble;
}
使用可空类型的一个有趣的副作用是您不能真正使用速记 IF。速记 IF 必须从两个条件返回相同的类型,并且在任何一种情况下都不能为空。所以,投射或写出来:)
aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null)
.NET 支持可为空的类型,但是通过这样声明它们,您必须对它们进行一些不同的处理(可以理解,现在通常是值类型的东西有点像引用)。
如果您最终不得不在可空双精度和常规双精度之间进行太多转换,这也可能无济于事......就像自动生成的一组类很容易发生的情况一样。