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

C#中当另一变量非空时赋值变量的最简写法

简化可空类型条件赋值的写法

你可以利用C#的模式匹配来简化代码,避免重复调用.Value:

写法一:模式匹配+三元运算符

MyNullableString1 = MyNullableInt2 is int groupIndex ? regexMatch.Groups[groupIndex].Value : null;

写法二:Switch表达式(C# 8.0及以上)

MyNullableString1 = MyNullableInt2 switch { int groupIndex => regexMatch.Groups[groupIndex].Value, _ => null };

这两种写法都能实现需求:当MyNullableInt2不为null时,自动提取其值作为正则组索引,赋值对应组的Value;否则直接设为null,比原代码更简洁直观,也省去了手动调用.Value的冗余。

如果一定要用空条件运算符?.,可以结合自定义扩展方法(仅推荐频繁复用场景):

public static TResult IfNotNull<T, TResult>(this T? nullable, Func<T, TResult> selector) where T : struct
{
    return nullable.HasValue ? selector(nullable.Value) : default;
}

// 使用方式
MyNullableString1 = MyNullableInt2.IfNotNull(i => regexMatch.Groups[i].Value);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:15:01