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

如何根据字符串变量为多个条件分配对应值?

多条件字符串映射的优化方案

当需要处理超过2个字符串到值的映射时,嵌套三元表达式会变得难以维护,推荐以下几种更清晰的实现方式:

1. 使用字典(Dictionary)做映射

这种方式最易于扩展和维护,新增映射只需添加键值对即可:

var product = cbmproduct.Text.ToString().ToUpper();

// 定义字符串与offer_id的映射关系
var productOfferMap = new Dictionary<string, int>
{
    {"BSN", 16},
    {"MID", 17},
    {"XYZ", 18}, // 新增映射直接加在这里
    {"ABC", 19}
};

// 尝试获取对应值,不存在则用默认值0
int offer_id = productOfferMap.TryGetValue(product, out var id) ? id : 0;

List<Offer> offers = new List<Offer>();
Offer of = new Offer();
of.offer_id = offer_id;

2. 使用C# 8.0+的Switch表达式

语法简洁直观,适合固定的映射场景:

var product = cbmproduct.Text.ToString().ToUpper();

int offer_id = product switch
{
    "BSN" => 16,
    "MID" => 17,
    "XYZ" => 18,
    "ABC" => 19,
    _ => 0 // 默认值
};

List<Offer> offers = new List<Offer>();
Offer of = new Offer();
of.offer_id = offer_id;

3. 传统if-else if链

适合需要在匹配时添加额外逻辑的场景:

var product = cbmproduct.Text.ToString().ToUpper();
int offer_id = 0;

if (product == "BSN")
{
    offer_id = 16;
}
else if (product == "MID")
{
    offer_id = 17;
}
else if (product == "XYZ")
{
    offer_id = 18;
}
else if (product == "ABC")
{
    offer_id = 19;
}
// 新增条件直接加else if即可

List<Offer> offers = new List<Offer>();
Offer of = new Offer();
of.offer_id = offer_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:42:46