如何根据字符串变量为多个条件分配对应值?
多条件字符串映射的优化方案
当需要处理超过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
相关产品推荐
相关产品推荐

