1

私はジャグ配列を使用していますが、少し問題があります(または少なくとも私はそう思います)。これらの配列のサイズは、データベースに返される行数によって決まるため、非常に変動します。私が持っている唯一の解決策は、配列の次元を非常に大きく設定することですが、これは...物事を行うための最良の方法ではないようです。

int[][] hulkSmash = new int[10][];
hulkSmash[0] = new int[2] {1,2};

寸法を設定せずにジャグ配列を操作するにはどうすればよいですか、それともこれはC#プログラミングの現実ですか?

4

4 に答える 4

1

List<T>と コレクションを使用する他の例は、続行するための最良の方法です。私は時々見つけます

List<List<int>> hulkSmash = new List<List<int>>();

構文は少し扱いに​​くいです。幸いなことに、これを管理するためのオプションがいくつかあります。

私がときどき使用する最初のオプションは、エイリアスを作成することです。

using List<List<int>> = HulkSmashCollection;

これにより、常にネストする必要がなくなり<<<Types>>>ます。入力する場所ならどこでも、List<List<int>>代わりにHulkSmashCollection(またはさらに短いものを) 入力できます。


2 番目のオプションは、MyHulkSmashes などと呼ばれるクラス内にリストのリストをラップすることです。ここでは、必要な関数/プロパティのみを提供しCountますFind()

これらの概念はどちらも、画面上のコードの量を減らし、複雑さを軽減するために使用されます。

于 2010-05-27T19:56:20.943 に答える
1

次の 2 つの選択肢があります。

  • データベースから返された情報のサイズを読み取り、その時点で配列領域を割り当てることができます。
  • それ以外の場合、探しているのは、可変次元を持つデータ構造です。たとえば、リストを見てみましょう: MSDN: List< T >
于 2010-05-27T19:48:19.160 に答える
0
List<List<int>> hulkSmash = new List<List<int>>();
hulkSmash.Add(new List<int>() { 1, 2 });

また

List<int[]> hulkSmash = new List<int[]>();
hulkSmash.Add(new int[] { 1, 2 });
于 2010-05-27T19:48:48.780 に答える
0

int のコレクション (List など) は必要な柔軟性を提供し、必要以上に大きな配列を割り当てる場合のようにスペースを無駄にしません。

于 2010-05-27T19:51:41.137 に答える