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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:37:02