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
相关产品推荐
相关产品推荐

