如何填充二维对象数组?填充结果不符合预期求助
构建符合预期的C#二维对象数组
你需要的是**object[][]类型的交错数组**(又称 jagged array),而非严格意义上的二维数组object[,]。如果你的代码没生成预期结构,多半是嵌套层级或类型声明出了问题,下面给你几种可靠实现方式及错误排查点:
写法一:直接初始化(与示例逻辑一致)
这是最直观的方式,在顶层数组内直接嵌套new object[]创建子数组,编译器会自动推断类型为object[][]:
Guid guid = Guid.NewGuid(); var data = new[] { new object[] { 22, "cust1_fname", "cust1_lname", guid }, new object[] { 23, "cust2_fname", "cust2_lname", guid }, new object[] { 24, "cust3_fname", "cust3_lname", guid }, };
写法二:显式声明类型后填充
如果自动推断出现歧义,可以显式指定数组类型,适合动态添加元素的场景:
Guid guid = Guid.NewGuid(); object[][] data = new object[3][]; data[0] = new object[] { 22, "cust1_fname", "cust1_lname", guid }; data[1] = new object[] { 23, "cust2_fname", "cust2_lname", guid }; data[2] = new object[] { 24, "cust3_fname", "cust3_lname", guid };
常见错误排查
- 不要误写为严格二维数组
object[,]:这种数组的子元素是单个值而非数组,写法为new object[3,4],和你需要的结构完全不符。 - 避免额外嵌套容器:比如错误使用
new[] { new List<object> { ... } },此时顶层数组的元素是List<object>而非object[],破坏了预期结构。
内容的提问来源于stack exchange,提问作者Gil Erez
相关产品推荐
相关产品推荐

