- 締切済み
C# 多次元配列
C#で書かれたコードをVB.NETに書き換えようとしています。簡単なのでしょうが、C#をよく理解していないので書き換え方が分かりません。 多次元配列の部分で、 float[][] Ar = new float[5][]; と宣言しているのに次のループで、 Ar[d] = new float[5]; とあります。 コード: float[][] Ar = new float[5][]; for (int d = 0; d < 5; d++) { Ar[d] = new float[5]; } float s = 100; ...... ...... Ar[i][j] = s; この部分をVB.NET に書き換えるならどう書いたららいいのでしょうか?よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19868)
追記。 Arは「単精度浮動小数点数配列の先頭ポインタの配列」であり、要素数は5つ。 なので「Ar[0]」や「Ar[1]」は「単精度浮動小数点数配列の先頭ポインタ」になる。 図にすると +--------+ |配列へのポインタ| +--------+ |配列へのポインタ| +--------+ |配列へのポインタ| +--------+ |配列へのポインタ| +--------+ |配列へのポインタ| +--------+ と言う感じ。 で、それぞれのポインタは「単精度浮動小数点数が5つある配列」を指している。 結果として「単精度浮動小数点数が5つある配列が、5つある」と言う事になる。 詳しくは http://msdn.microsoft.com/ja-jp/library/dd314345.aspx の「3-3-6 多段階配列」の図3-15を参照する事。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19868)
Dim Ar()() As Single Dim d As Integer Ar = New Single(5)(){} For d = 0 To 4 Ar(d) = New Single(5) Next ...... ...... Ar(i)(j) = s もっとスマートに書けるけど、そのまんま書くとこうなるw。
補足
VBはC#と違って、Newメソッド、この場合は"Ar(d) = New ○○型"はコンストラクタになります。Single型のコンストラクタはありません。そこまでは辿り着けるのですが、そこからが解りません。。。