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

在C#中将两个一维数组合并为指定结构二维数组的技术问询

合并一维数组为指定结构的二维数组及相关疑问

现有数组

我有两个存储姓名和手机号的一维数组:

private string[] names = { "xaw",       "Tommy",     "Alan",   "Sergio",    "Adam",     "Pablo" };
private string[] phones = { "535-4213", "535-0421", "722-352", "070-3531", "343-2324", "344-2223" };

核心需求与疑问

  • 需求:将两个数组合并为**[6,2]结构的二维数组**,实现成对存储:phonesNames[0,0]为xaw,phonesNames[0,1]为535-4213,最终输出效果如下:
    Xaw 535-4213
    Tommy 535-0421
    Alan 722-352
    Sergio 070-3531
    Adam 343-2324
    Pablo 344-2223
    
  • 疑问:声明二维数组时是否必须指定大小(比如string[,] phonesNames = new string[6,2])?仅声明变量string[,] phonesNames;是否可行?

之前的错误实现

此前尝试的代码生成了[2,6]的数组,不符合需求:

private static void Main(string[] args)
{
    string[] names = { "xaw", "Tommy", "Alan", "Sergio", "Adam", "Pablo" };
    string[] phones = { "535-4213", "535-0421", "722-352", "070-3531", "343-2324", "344-2223" };

    string[,] phonesNames = new string[2, names.Length];
    for (var i = 0; i < names.Length; i++)
    {
        phonesNames[0, i] = names[i];
        phonesNames[1, i] = phones[i];
    }

    for (int i = 0; i < names.Length; i++)
        Console.WriteLine("{0} {1}", phonesNames[0,i], phonesNames[1,i]);
}
}

问题解答与正确实现

数组声明的疑问解答

仅写string[,] phonesNames;是可行的,但这只是声明了一个二维数组变量,必须在后续使用前完成初始化并指定大小,否则会报错。如果要直接初始化,也可以在声明时指定大小,两种方式都支持:

  • 方式1:先声明后初始化
    string[,] phonesNames;
    phonesNames = new string[6,2]; // 后续初始化时指定大小
    
  • 方式2:声明时直接初始化指定大小
    string[,] phonesNames = new string[6,2];
    

正确的合并代码

要生成[6,2]的二维数组,只需调整数组初始化的大小,并修改循环赋值的逻辑:

private static void Main(string[] args)
{
    string[] names = { "xaw", "Tommy", "Alan", "Sergio", "Adam", "Pablo" };
    string[] phones = { "535-4213", "535-0421", "722-352", "070-3531", "343-2324", "344-2223" };

    // 初始化[6,2]的二维数组,也可以先声明后初始化
    string[,] phonesNames = new string[names.Length, 2];
    // 循环赋值,每行对应一个姓名和手机号
    for (int dimension = 0; dimension < names.Length; dimension++)
    {
        phonesNames[dimension, 0] = names[dimension]; 
        phonesNames[dimension, 1] = phones[dimension];
    }

    // 输出验证
    for (int i = 0; i < names.Length; i++)
        Console.WriteLine("{0} {1}", phonesNames[i,0], phonesNames[i,1]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:25:26