2

struct別の配列フィールドを宣言することは可能structですか?

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct A
{
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct B
{
    public fixed A FieldA[123];
}

Visual Studio は、は ではFieldAなく単純な型の配列にしかできないことを示していstructます。ここに解決策/回避策はありますか?

4

2 に答える 2

3

別の構造体で構造体配列フィールドを宣言することは可能ですか?

はい。ただし、固定サイズのバッファにする場合は制限があります。C#4仕様のセクション18.7.1から:

固定サイズのバッファ宣言のバッファ要素タイプは、宣言によって導入されたバッファの要素タイプを指定します。バッファ要素のタイプは、事前定義されたタイプ、、、、、、、、、、、、、、またはsbyteのいずれかである必要があります。byteshortushortintuintlongulongcharfloatdoublebool

任意の構造体の固定サイズのバッファーをエミュレートするための代替手段を知りません。

于 2012-04-28T06:36:38.453 に答える
0

次のように2番目の構造体を定義してみてください。

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct B
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=123)]
    public fixed A[] FieldA;
}
于 2012-04-28T06:41:22.997 に答える