2012-04-28 138 views
2
中的結構數組

是否有可能在另一個struct中聲明struct數組字段?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的陣列。有沒有解決方案/解決方法?

回答

3

是否有可能在另一個結構中聲明結構數組字段?

是的,但是如果你想使它成爲一個固定大小的緩衝區有限制。從C#4規範的第18.7.1節開始:

固定大小的緩衝區聲明的緩衝區元素類型指定由聲明引入的緩衝區的元素類型。緩衝元件類型必須是預定義類型sbyte之一,byteshortushortintuintlongulongcharfloatdouble,或bool

我不知道任何替代方案來模擬任意結構的固定大小的緩衝區。

0

嘗試以這種方式定義第二結構:

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