2017-06-13 113 views
0

我已经在结构中声明了结构类型的参数,并且当我尝试从结构中使用该参数时,出现错误NullReferencePointer如何从结构中使用结构类型的参数?

另外我知道你不能初始化结构中的结构。有没有办法使用该参数而没有得到那个错误?

我想使用TCommandBuffer struct中的TCommandParam参数。

[StructLayout(LayoutKind.Sequential)] 
public struct TCommandParam 
{ 
    public int iValue; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)] 
    public byte[] sValue; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] 
    public byte[] FrameFD;  
} 

[StructLayout(LayoutKind.Sequential)] 
public struct TCommandBuffer 
{ 
    public int Command; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] 
    public TCommandParam[] Param; 
    public int ReturnValue; 
} 

回答

0

也许使用构造??修改第二结构如下:

[StructLayout(LayoutKind.Sequential)] 
public struct TCommandBuffer 
{ 
    public int Command; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] 
    public TCommandParam[] Param; 
    public int ReturnValue; 
    public TCommandBuffer(int tsize, int cmd, int ret) 
    { 
     Param = new TCommandParam[tsize]; 
     Command = cmd; 
     ReturnValue = ret; 
    } 
} 
+0

我试过,但我也有同样的错误。 –

+0

那么你必须在某处正确初始化'TCommandBuffer'?初始化时,构造函数被调用并且成员被初始化。 – Abhishek

+0

是的,对不起,它从第一次开始工作,这只是我有另一个代码未初始化,这就是为什么我写我有同样的错误。谢谢您的帮助 !!!。 –