C#で配列の配列を作成するにはどうすればよいですか? ジャグ配列の作成について読んだことがありますが、それが最善の方法であるかどうかはわかりません。私はこのようなことを達成したいと思っていました:
string[] myArray = {string[] myArray2, string[] myArray3}
次に、次のようにアクセスできますmyArray.myArray2[0];
コードが機能しないことはわかっていますが、私の言いたいことを説明するための例です。
ありがとう。
C#で配列の配列を作成するにはどうすればよいですか? ジャグ配列の作成について読んだことがありますが、それが最善の方法であるかどうかはわかりません。私はこのようなことを達成したいと思っていました:
string[] myArray = {string[] myArray2, string[] myArray3}
次に、次のようにアクセスできますmyArray.myArray2[0];
コードが機能しないことはわかっていますが、私の言いたいことを説明するための例です。
ありがとう。
配列の配列または多次元配列の簡単な例は次のとおりです。
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());
}
}
ギザギザの配列が必要です。これが最適なソリューションです
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 を使用する前に、その要素を初期化する必要があります。
あなたの場合、配列を別のクラスでラップできますが、それは非常に冗長なようです
リストのリストを使用できます。リスト - それはただの動的配列です:
var list = new List<List<int>>();
list.Add(new List<int>());
list[0].Add(1);
Console.WriteLine(list[0][0]);
これを行う方法は、ジャグ配列を使用することです。
string[][] myArray;
あなたのやり方は本当に意味がありません:
myArray.myArray2[20] // what element is the first array pointing to?
少なくとも(可能であれば)
myArray[1].myArray2[20];
これは、ジャグ配列で行う標準的な方法よりも明らかに悪いです。myArray[1][20];
あなたの本当の目的が理解できません。ただし、オプションとして、ここで説明されているようdynamic
に type を使用して動的辞書を作成できます(例のセクションを参照)。
ただし、他の回答で説明されているように、多次元配列が必要になる可能性が高くなります
列挙型が表す文字列のリストを取得するために同じことをしたかったのです。考えられる解決策は次のとおりです。
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);