刚刚接触C#,问个很白痴的问题,如何定义结构体,比如C中的结构体:
typedef struct {
char A[16];
char B[16];
char C;
char D;
char E[16];
char F[160];
short index;
}A;
如何用C#定义出来呢?

解决方案 »

  1.   

    [MarshalAs(UnmanagedType.LPArray, SizeConst=16)] byte[] A
      

  2.   

    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)] 
    public struct StructA
    {
        [MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)] 
        public string A;    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)] 
        public string B;    public char C;    public char D;    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)] 
        public string E;    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=160)] 
        public string F;    public int index;
    }
      

  3.   

    [MarshalAs(UnmanagedType.LPStr, SizeConst=16)] string A
      

  4.   

    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconplatforminvokedatatypes.asp
      

  5.   

    [MarshalAs(UnmanagedType.LPArray, SizeConst=16)] byte[] A 这个很牛我来接份
      

  6.   

    public struct iniKeyName
    {
    public int iGetNum;
    public string sTempDirName;
    public string sMediaFd; 
    public string sFtpRootLoader;
    public int iMediaOtherDef;
    public int iFdSize;
    public int iMoSize;
    public int iNwSize;
    public int iMtSize;
    public bool bNwPermition;
    }
      

  7.   

    To cw888() 
    这样好象不对吧
      

  8.   

    我看还是不要用结构体比较好,因为结构体是值类型,不如改进用数据类
    public class DataClass
    {
       private string tempA = String.Empty;
       public string TempA
      {
         set
         {
            tempA = value;
          }
         get
         {
           return tempA;
         }
       }   private int tempB = 0;
       public int TempB
      {
         set
         {
            tempA = value;
          }
         get
         {
           return tempA;
         }
       }
    }这种效率更高
      

  9.   

    public struct iniKeyName
    {
    public int iGetNum;
    public string sTempDirName;
    public string sMediaFd; 
    public string sFtpRootLoader;
    public int iMediaOtherDef;
    public int iFdSize;
    public int iMoSize;
    public int iNwSize;
    public int iMtSize;
    public bool bNwPermition;
    }这样就是定义结构体,为什么说cw888() 不对!