0

以下のように一定サイズの配列を作成するときに、カーテンの後ろで何が起こっているのかを理解しようとしています:

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public float[] constArray;

fixedキーワードを使用できることは理解していrefますが、オプションではなくなり、すべてのポインター操作は固定式内にある必要があります。

私がやろうとしているのは、XML ファイルを解析し、配列内の特定のインデックスに格納することです。したがって、ファイルに 10 個の要素がある場合、次のように設定できます。

for (int i = 0; i < 10; i++)
{
    readElement("element", ref constArray[i]);
}

しかし、constArray[i]ですnull

さらなるインスタンス化が必要になるかもしれませんが、マーシャリングのポイントは何でしょう。マーシャリングは、参照を作成するために操作するオブジェクトを作成すると思いましたref

多くの情報を見つけることなく、参照型値型を読みました。私はまた、多くの進歩を遂げずに、 ref参照配列などの他のいくつかを読みました。

概念をよく理解できるリソースを見つけたようです。そのため、リソースと回答をいただければ幸いです。

ありがとう、ブレイク

4

1 に答える 1

1

まず第一に - floatnull にすることはできません (nullable float が必要な場合は を使用しますfloat?)。そのため、問題は初期化されていない配列にある可能性がありますか?

オーバーラルMarshalAs

マネージ コードとアンマネージ コードの間でデータをマーシャリングする方法を示します。

それはあなたが望むものですか?またはあなたの目標は次のように単純ですか

float [] constArray = new float[10];

単純な配列が必要だと確信していますか?なぜ使用しないのList<float>ですか?

于 2012-08-29T08:32:24.533 に答える