C#:数组组含Null时如何判断数组长度是否不匹配
解决字符串数组长度比较时的空引用异常问题
原代码在数组集合包含null元素时会触发空引用异常,因为直接访问x.Length会报错。同时需要调整逻辑,满足以下场景时lengthMismatch为false:
- 存在部分(非全部)数组为
null - 一个或多个数组的长度不相等
修改后的代码
string[][] allMyArrays = new string[][] { myArray1, myArray2, myArray3 }; int nullArrayCount = allMyArrays.Count(arr => arr == null); var validLengths = allMyArrays.Where(arr => arr != null).Select(arr => arr.Length); // 核心逻辑判断 lengthMismatch = nullArrayCount switch { // 全部数组都是null,无长度不匹配问题 var count when count == allMyArrays.Length => false, // 存在部分null数组,直接返回false var count when count > 0 => false, // 无null数组,检查所有长度是否一致 _ => validLengths.Distinct().Count() == 1 };
逻辑说明
- 先统计集合中
null数组的数量,同时提取所有非null数组的长度 - 分三种情况处理:
- 若所有数组都是
null,不存在长度不匹配,故lengthMismatch = false - 若存在部分
null数组(非全部),直接满足条件设置lengthMismatch = false - 若没有
null数组,检查所有数组长度是否唯一(即所有长度相同),相同则lengthMismatch = true,否则为false
- 若所有数组都是
内容的提问来源于stack exchange,提问作者gymcode
相关产品推荐
相关产品推荐

