私は、以下の作業がC++の背景から来ていることに多少なりとも驚きました。 明らかに実行時に境界情報を保持していますが、どのようにして最初と2番目の境界を取得できますか?配列の境界を探しますか? C#
反射は歓迎ですがおすすめしません。これらはGetUpperBound
とGetLowerBound
いる間.NETで
ff(new int[3, 4]);
static void ff(int[,] a)
{
var aa = a[1, 2];
}
私は、以下の作業がC++の背景から来ていることに多少なりとも驚きました。 明らかに実行時に境界情報を保持していますが、どのようにして最初と2番目の境界を取得できますか?配列の境界を探しますか? C#
反射は歓迎ですがおすすめしません。これらはGetUpperBound
とGetLowerBound
いる間.NETで
ff(new int[3, 4]);
static void ff(int[,] a)
{
var aa = a[1, 2];
}
int bound0 = a.GetUpperBound(0);
int bound1 = a.GetUpperBound(1);
配列は、それらに添付の多くの方法があります:
var three = a.GetUpperBound(0); // contents is: 2
var four = a.GetUpperBound(1); // contents is: 3
Array.GetUpperBound Methodは、配列内の指定された次元の上限を取得します。 :
int bound0 = array.GetUpperBound(0);
int bound1 = array.GetUpperBound(1);
普通の方法はGetLength(int dim)
です。
for (int row = 0; row < a.GetLength(0); row++)
...
1次元配列では、ほとんどがLength
プロパティが使用されます。
i
のアクセシブルインデックスは、 GetUpperBound(i)
です。
i
の要素数はGetLength(i)
またはGetLongLength(i)
です。
寸法は0から始まります。
下限がArray.CreateInstanceの1つのオーバーロードを使用して作成できるので、下限は常に0ではありません。 – Andrei