9

C#で配列の配列を作成するにはどうすればよいですか? ジャグ配列の作成について読んだことがありますが、それが最善の方法であるかどうかはわかりません。私はこのようなことを達成したいと思っていました:

string[] myArray = {string[] myArray2, string[] myArray3}

次に、次のようにアクセスできますmyArray.myArray2[0];

コードが機能しないことはわかっていますが、私の言いたいことを説明するための例です。

ありがとう。

4

6 に答える 6

14

配列の配列または多次元配列の簡単な例は次のとおりです。

int[] a1 = { 1, 2, 3 };
int[] a2 = { 4, 5, 6 };
int[] a3 = { 7, 8, 9, 10, 11 };
int[] a4 = { 50, 58, 90, 91 };

int[][] arr = {a1, a2, a3, a4};

アレイをテストするには:

for (int i = 0; i < arr.Length; i++)
{
    for (int j = 0; j < arr[i].Length; j++)
    {
        Console.WriteLine("\t" +  arr[i][j].ToString());
    }
}
于 2011-06-19T16:44:22.843 に答える
6

ギザギザの配列が必要です。これが最適なソリューションです

int[][] j = new int[][] 

また:

string[][] jaggedArray = new string[3][];

jaggedArray[0] = new string[5];
jaggedArray[1] = new string[4];
jaggedArray[2] = new string[2]

それから:

jaggedArray[0][3] = "An Apple"
jaggedArray[2][1] = "A Banana"

等...

ノート:

jaggedArray を使用する前に、その要素を初期化する必要があります。

あなたの場合、配列を別のクラスでラップできますが、それは非常に冗長なようです

于 2011-06-19T16:30:09.410 に答える
3

リストのリストを使用できます。リスト - それはただの動的配列です:

        var list = new List<List<int>>();
        list.Add(new List<int>());
        list[0].Add(1);
        Console.WriteLine(list[0][0]);
于 2011-06-19T16:42:54.413 に答える
0

これを行う方法は、ジャグ配列を使用することです。

string[][] myArray;

あなたのやり方は本当に意味がありません:

myArray.myArray2[20] // what element is the first array pointing to?

少なくとも(可能であれば)

myArray[1].myArray2[20];

これは、ジャグ配列で行う標準的な方法よりも明らかに悪いです。myArray[1][20];

于 2011-06-19T16:34:23.640 に答える
0

あなたの本当の目的が理解できません。ただし、オプションとして、ここで説明されているようdynamicに type を使用して動的辞書を作成できます(例のセクションを参照)。
ただし、他の回答で説明されているように、多次元配列が必要になる可能性が高くなります

于 2011-06-19T16:41:19.930 に答える
0

列挙型が表す文字列のリストを取得するために同じことをしたかったのです。考えられる解決策は次のとおりです。

     public enum Group
     {
          All = 0,
          Artists = 1,
          Builders = 2
      }

      private static readonly string[] _rolesAll = { "Brett", "Jeff", "Virgil", "Danielle" };
      private static readonly string[] _rolesArtists = { "Brett", "Danielle" };
      private static readonly string[] _rolesBuilders = { "Jeff" };

      private static readonly SortedList<Group, string[]> _sortedGroupToRoles = new SortedList<Group, string[]> { { Group.All, _rolesAll }, { Group.Artists, _rolesArtists}, { Group.Builders, _rolesBuilders } };

それを使用するには:

      _sortedGroupsToRoles.TryGetValue(Group.Artists, out string[] roles);
于 2021-12-23T11:49:20.390 に答える