You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现可空Boolean转可空short的C#扩展方法

语法错误修正方案

原代码存在的问题

  • 三元运算符逻辑颠倒:b.HasValue ? null的逻辑是当入参有值时返回null,和需求完全相反
  • 内层三元运算符语法不符合C#规范:三元运算符的正确结构为条件 ? 满足时返回值 : 不满足时返回值,原代码把?和:的位置写反
  • 缺少类型显式声明:直接返回的1、0默认是int类型,和方法返回值short?不匹配,会触发类型推断错误

修正后的代码

基础兼容写法(支持所有C#版本)

public static short? ToShortNullable(this bool? b)
{       
     return b.HasValue ? (b.Value ? (short)1 : (short)0) : null;
}

简化写法(支持C# 8及以上版本)

用switch表达式可以让代码更简洁易读:

public static short? ToShortNullable(this bool? b) => b switch
{
    true => 1,
    false => 0,
    null => null
};

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:24:02