【问题标题】:Jagged array by declared arrays声明数组的锯齿状数组
【发布时间】:2017-03-15 16:53:20
【问题描述】:

我搜索并找不到 C# 中的解决方案

我已经声明并分配了数组:

string[] arr1 = {"a","b","c","d","e","f"};
string[] arr2 = {"1","2","3","4","5","6"};
string[] arr3 = {"s","t","a","c","k","o"};
string[] arr4 = {"v","e","r","f","l","w"};

我想从这些数组中创建一个锯齿状数组,但没有成功。

string[,] port = new string[]
{
    new string[] arr1[],
    new string[] arr2[],
    new string[] arr3[],
    new string[] arr4[],
};

我的错误在哪里?

我的程序会产生随机的ints 来调用锯齿状数组中的一个值

Random random = new Random();
int x = random.Next(0,5);
int y = random.Next(0,3);
Console.WriteLine(port[y,x]);

【问题讨论】:

  • 您是否要创建一个数组数组?
  • 是的,但我做不到,它是一种二维数组,我需要从声明的数组中创建该数组
  • 简而言之[,]是多维的,[][]是锯齿状的
  • 所以要使其成为 3 维,我应该使用 [ , , ] 还是 [ ][ ][ ]
  • 现在我将二维扩展为 3,但上次我使用相同列的所有数组时,没有一个数组有 2 个元素,另一个有 4 个元素,最后一个有 14 个元素,但失败了:(跨度>

标签: c# arrays jagged-arrays


【解决方案1】:

有两个错误:

  1. 您没有声明一个锯齿形数组,而是一个多维数组。由于您的“内部”数组已经定义,您需要一个 数组数组,它被称为“锯齿状”数组。
  2. 您不需要在声明中使用new string[],因为您已经声明了内部数组

所以这应该有效:

string[][] port = new string[][]
{
    arr1, arr2, arr3, arr4
};

或者使用更短的数组初始化器:

string[][] port = { arr1, arr2, arr3, arr4 };

要访问此数组,请使用:

Console.WriteLine(port[y][x]);

【讨论】:

  • 好像看不懂Jagged Array的逻辑;谢谢它的工作。
【解决方案2】:

试试这个:

string[] arr1 = { "a", "b", "c", "d", "e", "f" };
string[] arr2 = { "1", "2", "3", "4", "5", "6" };
string[] arr3 = { "s", "t", "a", "c", "k", "o" };
string[] arr4 = { "v", "e", "r", "f", "l", "w" };

string[][] port = new string[4][];
port[0] = arr1;
port[1] = arr2;
port[2] = arr3;
port[3] = arr4;

或者简单地说:

string[][] port = new string[][] { arr1, arr2, arr3, arr4 };

用法:

string test = port[1][5];

【讨论】:

  • 感谢 mm8 ,很高兴您能一次分享 2 个解决方案。
  • 我希望我能接受这两个答案:D 你们两个帮了我很多
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 2018-09-27
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多