如何在C#对象初始化器中实现多条件分支赋值?
在C#对象初始化器中处理多条件赋值
当然可以实现你需要的多条件场景,下面是几种实用的实现方式:
1. 嵌套三元运算符
如果条件数量不多,可以直接在初始化器里嵌套使用三元表达式,写法紧凑:
new ObjectType { Value = string.Equals(ColValue, "A", StringComparison.OrdinalIgnoreCase) ? "Value A" : string.Equals(ColValue, "B", StringComparison.OrdinalIgnoreCase) ? "Value B" : "Value X" };
注意:条件超过3个时,这种写法的可读性会明显下降,不建议过度嵌套。
2. 使用switch表达式(C# 8.0及以上)
这是更推荐的方式,尤其是多分支场景,语法清晰、可读性强:
new ObjectType { Value = ColValue.ToUpperInvariant() switch { "A" => "Value A", "B" => "Value B", _ => "Value X" } };
如果需要严格保留不区分大小写的判断逻辑,也可以用带when子句的写法:
new ObjectType { Value = ColValue switch { var c when string.Equals(c, "A", StringComparison.OrdinalIgnoreCase) => "Value A", var c when string.Equals(c, "B", StringComparison.OrdinalIgnoreCase) => "Value B", _ => "Value X" } };
3. 提取逻辑到单独方法
当条件逻辑复杂或需要复用的时候,把赋值逻辑抽成独立方法,让初始化器更简洁:
// 定义复用的逻辑方法 private static string GetTargetValue(string colValue) { if (string.Equals(colValue, "A", StringComparison.OrdinalIgnoreCase)) return "Value A"; if (string.Equals(colValue, "B", StringComparison.OrdinalIgnoreCase)) return "Value B"; return "Value X"; } // 在对象初始化器中调用方法 new ObjectType { Value = GetTargetValue(ColValue) };
内容的提问来源于stack exchange,提问作者InquisitiveLad
相关产品推荐
相关产品推荐

