首页 > 后端开发 > C++ > 为什么我的C#三元运算符因无效类型而失败:`getBoolValue()? 10:null`?

为什么我的C#三元运算符因无效类型而失败:`getBoolValue()? 10:null`?

Barbara Streisand
发布: 2025-01-28 22:14:11
原创
540 人浏览过

Why Does My C# Ternary Operator Fail with Nullable Types: `GetBoolValue() ? 10 : null`?

c#无效类型和三元运算符:解决类型不一致

在C#中,使用具有无效类型的三元运算符(

)(例如? :)可能会导致“无法确定条件表达式的类型...”。当三元操作员的真实分支和错误分支具有不兼容的类型时,就会发生这种情况。 例如,int?失败是因为GetBoolValue() ? 10 : null是一个10>,而int表示没有值。 编译器无法决定表达式的单一类型。null>

问题源于三元运营商对一致返回类型的需求。

可以分配给无效的整数(null),而平原int?不能隐式成为int>。 int?以下几种纠正这一点的方法:

  1. 明确铸造为无效整数:

    >将整数施放到>:> int?

    <code class="language-csharp">x = GetBoolValue() ? (int?)10 : null;</code>
    登录后复制
  2. >显式null转换:显式施放

    null int?

    <code class="language-csharp">x = GetBoolValue() ? 10 : (int?)null;</code>
    登录后复制
  3. 使用

    >关键字:defaultdefault关键字提供了一种类型安全的方法来获取类型的默认值,这是null>:

    >
    <code class="language-csharp">x = GetBoolValue() ? 10 : default(int?);</code>
    登录后复制

这些解决方案确保类型的一致性,从而使编译器可以正确地将三元表达式的类型正确地推断为int?,从而解决了编译误差。 选择最适合您的编码样式和可读性首选项的方法。

以上是为什么我的C#三元运算符因无效类型而失败:`getBoolValue()? 10:null`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板