C# 基于双列表动态实现if判断 无需新增else if分支
动态匹配标题与对应URI的无分支实现
实现思路
你之前推测的用循环替代硬编码if-else的方向完全可行。因为titleList和uriList是按同索引一一对应的存储关系,只需要遍历所有存储的标题做匹配,命中后取同索引的URI调用YTPlayer方法即可,后续新增条目时只要往两个列表里追加对应内容,完全不需要修改匹配逻辑的代码。
替换原硬编码分支的参考代码
保留原有两个列表的声明不变:
private List<string> uriList = new List<string>(); private List<string> titleList = new List<string>();
将原来堆叠的if/else if分支整体替换为循环匹配逻辑即可:
bool isMatched = false; // 按索引遍历所有标题 for (int i = 0; i < titleList.Count; i++) { // 匹配到对应文本 if (item.Text == titleList[i]) { // 取同索引的URI执行方法 YTPlayer(uriList[i]); isMatched = true; // 命中后直接跳出循环,避免无效判断 break; } } // 原else分支的兜底逻辑可以写在这里 if (!isMatched) { // 未匹配到任何标题时的原有逻辑 }
补充说明:如果倾向使用
foreach遍历,需要额外维护一个计数变量同步跟踪当前遍历的索引值,才能正确取到uriList中的对应内容;相比之下带索引的for循环写法更简洁,也不容易因为索引错位引发匹配错误。
额外优化提示:长期维护两个并行列表容易出现索引错位问题(比如单独删除某条标题却忘记删除同位置的URI,会造成映射关系错乱)。如果后续条目量较大,可以直接改用Dictionary<string, string>以标题为键、URI为值存储映射关系,匹配时直接通过TryGetValue取值,连循环遍历的步骤都可以省略。
内容的提问来源于stack exchange,提问作者demo7up
相关产品推荐
相关产品推荐

