[ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Auto )]
请问这句是什么意思!!!!!!!! 请说的细点 我是新手!

解决方案 »

  1.   

    定义一个类的属性,加了这个属性后就可以控制这个对象在内存中的布局。
    如:
    public class A
    {
    public int intA;
    public string strA;
    }
    但是系统可能改变了它在内存中顺序(为了优化)。加了这个属性后可以强制它的布局不变。
    大概是这样吧,说得不对不要PK我啊。呵呵....
      

  2.   

    struct MyValue
    {
           Byte data1;
           int data2;
           String data3;
           Byte data4;
    };
    这里的大小为12,单位为bytes。CLR对值类型的布局做了优化:
    struct MyValue
    {
           String data3;   // 4bytes 指针
           int data2;          // 4bytes 整数
           Byte data1;     //1byte整数
           Byte data4;     //1byte整数
    };
    最后两个Byte字段后面要再填充两个bytes的空间,因此结果为4+4+1+1+2=12,能够节省一个栈对象的内存开销(按字段声明顺序来排列Layout,结果为16)。
    [StructLayout(LayoutKind::Sequential)]      // 按字段声明顺序排列[StructLayout(LayoutKind:: Auto)]       // 自动排列CharSet=CharSet.Auto 是字符集为自动