在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
相关产品推荐
相关产品推荐

