2011-06-19 6 views
3

私は、以下の作業がC++の背景から来ていることに多少なりとも驚きました。 明らかに実行時に境界情報を保持していますが、どのようにして最初と2番目の境界を取得できますか?配列の境界を探しますか? C#

反射は歓迎ですがおすすめしません。これらはGetUpperBoundGetLowerBoundいる間.NETで

ff(new int[3, 4]); 

    static void ff(int[,] a) 
    { 
     var aa = a[1, 2]; 
    } 
+1

下限がArray.CreateInstanceの1つのオーバーロードを使用して作成できるので、下限は常に0ではありません。 – Andrei

答えて

9
int bound0 = a.GetUpperBound(0); 
int bound1 = a.GetUpperBound(1); 
2

配列は、それらに添付の多くの方法があります:

var three = a.GetUpperBound(0); // contents is: 2 
var four = a.GetUpperBound(1); // contents is: 3 
1

Array.GetUpperBound Methodは、配列内の指定された次元の上限を取得します。 :

int bound0 = array.GetUpperBound(0); 
int bound1 = array.GetUpperBound(1); 
1

普通の方法はGetLength(int dim)です。

for (int row = 0; row < a.GetLength(0); row++) 
    ... 

1次元配列では、ほとんどがLengthプロパティが使用されます。

3

iのアクセシブルインデックスは、 GetUpperBound(i)です。

iの要素数はGetLength(i)またはGetLongLength(i)です。

寸法は0から始まります。

関連する問題