Jagged Array始终为空:List元素无法添加至交错数组的问题排查
问题分析与解决
你的代码存在几个关键错误,导致交错数组始终为空,逐一说明:
错误点1:错误调用Split方法
你的list元素是**(double, double)类型的元组**,不是字符串,元组根本没有Split方法,这段代码实际上无法通过编译。你可能误把元组当成了字符串类型的元素。
错误点2:误用LINQ的Append方法
数组是固定长度的集合,LINQ的Append方法不会修改原数组,而是返回一个包含新元素的新序列。你没有将这个新序列赋值给jaggedArray,所以原数组始终保持初始化时的状态——所有元素都是null。
错误点3:类型完全不匹配
你声明的jaggedArray是double[][](double类型的交错数组),但你试图添加string[]类型的元素,而且还把Convert.ToDouble的结果(double类型)放进字符串数组,这本身就会引发类型错误。
修正后的代码
方法1:使用索引直接赋值
利用你已经初始化好的数组大小,通过索引逐个设置元素:
var list = new List<(double, double)> { (-99.8299313, 32.2840118), (-99.8293304, 32.2840118), }; var jaggedArray = new double[list.Count][]; for (int i = 0; i < list.Count; i++) { var item = list[i]; // 直接将元组的两个元素转为double数组,赋值给交错数组的对应索引 jaggedArray[i] = new double[] { item.Item1, item.Item2 }; }
方法2:用LINQ直接转换(更简洁)
直接通过LINQ将元组集合转为交错数组:
var list = new List<(double, double)> { (-99.8299313, 32.2840118), (-99.8293304, 32.2840118), }; var jaggedArray = list.Select(item => new double[] { item.Item1, item.Item2 }).ToArray();
内容的提问来源于stack exchange,提问作者KJSR
相关产品推荐
相关产品推荐

