You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#新手求助:如何为类中多维/交错数组参数赋值?

帮你搞定C#多维/交错数组赋值问题

嘿,作为C#新手碰到数组问题太正常啦!我来帮你理清多维数组、交错数组的区别,再结合你的代码给出解决方案~

先搞懂两种数组的核心区别

  • 多维数组(比如string[,]):是「矩形」结构,每行的元素数量完全相同,像一张规整的表格。比如string[3,2]就是3行2列,每行固定2个元素。
  • 交错数组(比如string[][]):是「数组的数组」,每个子数组的长度可以不一样,灵活性更高。比如第一个子数组有2个元素,第二个可以有5个。

另外,你的代码里用了public Array vehicle_options { get; set; },建议换成强类型数组(比如string[][]、string[,]),这样编译时就能检查类型错误,比宽泛的Array好用多了!

结合你的场景给出具体解决方案

假设你的Option类是类似这样的(从外部Web服务获取的结构):

public class Option
{
    // 举个例子,假设每个Option有多个可选值,或者单个属性
    public string[] Values { get; set; } 
    // 或者是单个属性:public string Name { get; set; }
}

场景1:需要交错数组(子数组长度不固定)

先重构CustomFields类为强类型:

class CustomFields 
{ 
    public string[][] vehicle_options { get; set; } 
}

然后从options_list生成交错数组:

var custom_fields = new CustomFields();
List<Option> options_list = GetOptionsFromWebService(); // 从外部服务获取

// 用LINQ快速转成交错数组(每个Option的Values作为子数组)
custom_fields.vehicle_options = options_list.Select(opt => opt.Values).ToArray();

// 如果不用LINQ,用循环的方式:
// List<string[]> tempList = new List<string[]>();
// foreach (Option option in options_list)
// {
//     tempList.Add(option.Values);
// }
// custom_fields.vehicle_options = tempList.ToArray();

场景2:需要多维数组(固定列数的矩形结构)

比如每个Option有2个属性(如Name和Value),要转成2列的多维数组:
先修改类:

class CustomFields 
{ 
    public string[,] vehicle_options { get; set; } 
}

然后赋值:

var custom_fields = new CustomFields();
List<Option> options_list = GetOptionsFromWebService();

// 初始化多维数组:行数是options_list的数量,列数是2
custom_fields.vehicle_options = new string[options_list.Count, 2];

for (int i = 0; i < options_list.Count; i++)
{
    custom_fields.vehicle_options[i, 0] = options_list[i].Name;
    custom_fields.vehicle_options[i, 1] = options_list[i].Value;
}

场景3:其实只需要一维数组

如果你只是把每个Option的某个单一属性(比如Name)收集成列表,那一维数组就够了:
修改类:

class CustomFields 
{ 
    public string[] vehicle_options { get; set; } 
}

然后赋值:

var custom_fields = new CustomFields();
List<Option> options_list = GetOptionsFromWebService();
List<string> options = new List<string>();

foreach (Option option in options_list)
{
    options.Add(option.Name); // 假设收集Name属性
}

custom_fields.vehicle_options = options.ToArray();

总结建议

  • 如果子集合长度统一,选多维数组;
  • 如果子集合长度不固定,选交错数组;
  • 尽量用强类型数组代替Array,类型更安全,代码更易维护。

内容的提问来源于stack exchange,提问作者Lez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:27:47