c#无效类型和三元运算符:解决类型不一致
在C#中,使用具有无效类型的三元运算符()(例如? :
)可能会导致“无法确定条件表达式的类型...”。当三元操作员的真实分支和错误分支具有不兼容的类型时,就会发生这种情况。 例如,int?
失败是因为GetBoolValue() ? 10 : null
是一个10
>,而int
表示没有值。 编译器无法决定表达式的单一类型。null
>
可以分配给无效的整数(null
),而平原int?
不能隐式成为int
>。
int?
以下几种纠正这一点的方法:
>将整数施放到>:>
int?
<code class="language-csharp">x = GetBoolValue() ? (int?)10 : null;</code>
::null
int?
<code class="language-csharp">x = GetBoolValue() ? 10 : (int?)null;</code>
>关键字:default
default
关键字提供了一种类型安全的方法来获取类型的默认值,这是
<code class="language-csharp">x = GetBoolValue() ? 10 : default(int?);</code>
这些解决方案确保类型的一致性,从而使编译器可以正确地将三元表达式的类型正确地推断为int?
,从而解决了编译误差。 选择最适合您的编码样式和可读性首选项的方法。
以上是为什么我的C#三元运算符因无效类型而失败:`getBoolValue()? 10:null`?的详细内容。更多信息请关注PHP中文网其他相关文章!