7

以下返回

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

aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null)

我不能只使用 aNullableBool 而不是使用 aDouble 往返的原因是因为 aNullableDouble 是生成的 EntityFramework 类的属性,它不能用作 out par。

4

5 回答 5

9
aNullableDouble = double.TryParse(aString, out aDouble) ? (double?)aDouble : null;
于 2008-09-17T14:13:28.433 回答
7

只需将语法吹成完整的语法而不是速记......它会更容易阅读:

aNullableDouble = null;
if (double.TryParse(aString, out aDouble))
{
    aNullableDouble = aDouble;
}
于 2008-09-17T14:14:28.977 回答
2

使用可空类型的一个有趣的副作用是您不能真正使用速记 IF。速记 IF 必须从两个条件返回相同的类型,并且在任何一种情况下都不能为空。所以,投射或写出来:)

于 2008-09-17T14:42:57.597 回答
1
aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null)
于 2008-09-17T14:13:07.870 回答
0

.NET 支持可为空的类型,但是通过这样声明它们,您必须对它们进行一些不同的处理(可以理解,现在通常是值类型的东西有点像引用)。

如果您最终不得不在可空双精度和常规双精度之间进行太多转换,这也可能无济于事......就像自动生成的一组类很容易发生的情况一样。

于 2008-09-17T14:15:11.143 回答