vb 中定义的struct如下:
Type QWAY_CCB    ccbcmd As Byte
    ccbdata(256) As ByteEnd Type
请问我在C#中如何定义和引用呢?谢谢

解决方案 »

  1.   

    public struct QWAY_CCB
    {
       public Byte ccbcmd ;
       public Byte[] ccbdata;
    }
      

  2.   

    那ccbdata大小在哪定义呢?是在引用的时候吗?
      

  3.   

    int[] fib; // fib is of type int[], "array of int"
    fib = new int[100]; // create a 100-element int array
      

  4.   

    可以在struct的构造函数中指定数组大小:public struct QWAY_CCB
    {
    public Byte ccbcmd ;
    public Byte[] ccbdata;public QWAY_CCB()
    {
    ccbdata = new Byte[100];
    }}
      

  5.   

    我是指的通过结构名来指定数组大小。
    那你把结构名和数组大小的对应关系保存到xml或者创建资源文件,然后在程序中调用。
      

  6.   


       结构这样定义:
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        public struct QWAY_CCB
        {
            public byte ccbcmd;
            [MarshalAs(UnmanagedType.ByValArray , SizeConst = 256)]
            public byte[] ccbdata;        
        }我现在用的vs2005,有好多以前支持的东西现在都不行了。比如    QWAY_CCB qway_ccb;
        int ret = AB_GW_RcvMsg(node, qway_rcv);
        编译时提示qway_ccb变量没有赋值,于是我改为
     
        QWAY_CCB qway_ccb = new QWAY_CCB();
        int ret = AB_GW_RcvMsg(node, qway_rcv);
        可以编译,但运行有错。提示:
        Attempted to read or write protected memory. This is often an indication that other memory is corrupt.   AB_GW_RcvMsg函数是个API函数:
         private static extern int AB_GW_RcvMsg(long Gateway_ID, QWAY_CCB ccb);
        
       
      

  7.   

    大家帮看看,是不是struct定义的有问题,导致类型与AB_GW_RcvMsg函数的参数QWAY_CCB 不匹配。
    问题可能出在
      public byte[] ccbdata; 的定义上吧
      

  8.   

    我们这已经用vb实现了这些代码,只是现在要求我们将vb代码转化为C#QWAY_CCB结构在vb中是这样定义的
    Type QWAY_CCB    ccbcmd As Byte
        ccbdata(256) As ByteEnd Type
      

  9.   

    struct QWAY_CCB
    {
        byte ccbcmd;
        byte[] ccbdata;
    }
      

  10.   


    Attempted to read or write protected memory. This is often an indication that other memory is corrupt.请问上面的提示错误是什么错误?