C#中如何将字符串列表映射到多变量并处理长度不足场景
解决方案
方法一:逐个索引安全访问
直接对每个变量的索引做存在性检查,从根源避免越界异常:
// 先初始化所有变量为空字符串 string var1 = "", var2 = "", var3 = "", var4 = "", var5 = "", var6 = ""; if (mod != null) { var1 = mod.Count > 0 ? mod[0] ?? "" : ""; var2 = mod.Count > 1 ? mod[1] ?? "" : ""; var3 = mod.Count > 2 ? mod[2] ?? "" : ""; var4 = mod.Count > 3 ? mod[3] ?? "" : ""; var5 = mod.Count > 4 ? mod[4] ?? "" : ""; var6 = mod.Count > 5 ? mod[5] ?? "" : ""; }
这段代码同时处理了三种情况:mod为null、列表长度不足6、列表元素本身为null,所有缺失场景都默认赋值为空字符串。
方法二:用LINQ补全缺失元素
如果觉得逐个写判断太繁琐,可先用LINQ把列表补全到固定长度,再直接索引赋值:
// 拼接原列表与6个空字符串,再取前6个元素,确保最终列表长度为6 var filledList = mod?.Concat(Enumerable.Repeat("", 6)) ?.Take(6) .ToList() ?? Enumerable.Repeat("", 6).ToList(); string var1 = filledList[0]; string var2 = filledList[1]; string var3 = filledList[2]; string var4 = filledList[3]; string var5 = filledList[4]; string var6 = filledList[5];
逻辑上通过拼接空字符串补全长度,再截取前6个元素,后续直接索引访问不会触发越界。
方法三:封装扩展方法(复用性强)
如果需要多次处理类似场景,可封装一个通用扩展方法:
public static class ListExtensions { public static string GetSafeElement(this List<string> list, int index, string defaultValue = "") { if (list == null || index < 0 || index >= list.Count) return defaultValue; return list[index] ?? defaultValue; } }
使用时只需一行代码获取元素:
string var1 = mod.GetSafeElement(0); string var2 = mod.GetSafeElement(1); string var3 = mod.GetSafeElement(2); string var4 = mod.GetSafeElement(3); string var5 = mod.GetSafeElement(4); string var6 = mod.GetSafeElement(5);
内容的提问来源于stack exchange,提问作者Pratex
相关产品推荐
相关产品推荐

