如果+可空类型(C#)的简写

时间:2008-09-17 14:11:24

标签: c# conditional-operator

以下内容返回

  

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

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

我之所以不能使用aNullableBool而不是使用aDouble的往返是因为aNullableDouble是生成的EntityFramework类的属性,不能用作超出标准。

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:7)

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

aNullableDouble = null;
if (double.TryParse(aString, out aDouble))
{
    aNullableDouble = aDouble;
}

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

.NET支持nullable types,但是通过声明它们,你必须对它们有所不同(因为,可以理解的是,现在通常是一种值类型的东西就像引用一样)。

如果您最终不得不在可空双打和常规双打之间进行过多转换,这也可能没什么帮助......就像自动生成的一组类的情况一样。