-1

2 次元 float 配列のリストがあります。

List<float[,]> nodes = new List<float[,]>();

私はいくつかのことを行い、最終的に使用したい float[,] のゼロから始まるインデックスを取得します (たとえば、3 番目の配列の場合は 2)。

今、この配列から値を取得したいと思います。私はそれが次のように機能するかもしれないと思った

float foo = nodes[selectedIndex][0,0]

ノード[selectedIndex]の配列の要素[0,0]を取得します。何と言いましょうか。うまくいきません。オーバーワークするだけ

float[,] tmp = nodes[selectedIndex];
float foo = tmp[0,0];

したがって、私が理解している限り、1つの値を取得するために、配列に2回(リストに1回、tmpに1回)メモリを割り当てる必要があります。そんなはずないでしょ!? この値に到達するためのショートカットはありませんか?

あなたが私を助けてくれることを願っています!

4

3 に答える 3

1
float foo = nodes[selectedIndex][0,0]

そのままで完全に正常に動作しますが、それを理解できないだけのインテリセンスです。

また、値をtmp割り当てても大量のメモリが割り当てられない場合、tmp 変数は実際のデータを指すだけです。

于 2012-10-19T09:17:14.120 に答える
0

これは機能します:

float foo = (nodes[selectedIndex])[0,0];

しかし、次のようにも動作します:

            List<float[,]> nodes = new List<float[,]>();
            float[,] fl = new float[2, 2];
            fl[0, 0] = 2.2f;
            nodes.Add(fl);
            float foo = nodes[0][0, 0];

たぶん、float 配列をインスタンス化していませんか?

于 2012-10-19T09:12:51.670 に答える
0

このコードは有効で機能します。問題は別のものに違いない。nodesのインデックスを持つエントリがない可能性がありselectedIndexます ?


構文が正しいことを示す小さなサンプル:

List<float[,]> nodes = new List<float[,]>();
nodes.Add(new float[2,2]{{1,2},{3,4}});
float foo = nodes[0][0,0];

ライブでご覧ください: http://ideone.com/R2Drh

于 2012-10-19T09:13:06.403 に答える