关于C#[StructLayout(LayoutKind.Sequential)]的问题

翻译 2012年03月23日 15:12:34

         结构体是由若干成员组成的.布局有两种

           1.Sequential,顺序布局,比如

           struct S1  {

             int a;

             int b;}

              那么默认情况下在内存里是先排a,再排b也就是如果能取到a的地址,和b的地址,

              则相差一个int类型的长度,4字节

               [StructLayout(LayoutKind.Sequential)]

               struct S1 {

                int a;

                int b; }

                这样和上一个是一样的.因为默认的内存排列就是Sequential, 也就是按成员的先后顺序排列.

                 2.Explicit,精确布局需要用FieldOffset()

                设置每个成员的位置这样就可以实现类似c的公用体的功能

                 [StructLayout(LayoutKind.Explicit)]

                 struct S1{

                [FieldOffset(0)]

                int a;

                [FieldOffset(0)]

               int b;}

               这样a和b在内存中地址相同

相关文章推荐

关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]  这是C#引用非托管的C/C++的DLL的一种定义定义结构体的方式,主要是为了...

StructLayout特&性

StructLayout特性           公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递...

C#-struct实例字段的内存布局(Layout)和大小(Size)

转自:http://blog.csdn.net/masterft/article/details/1699009 struct实例字段的内存布局(Layout)和大小(Size) ...

[StructLayout(LayoutKind.Sequential) ] 是什么意思

[StructLayout(LayoutKind.Sequential) ]是结构体排序问题; 首先介绍一下 结构体和类的区别 :类是按引用传递 结构体是按值传递 进入正题: 结构体...

dllexport、dllimport区别

以下全部是经过实际测试过的(测试环境VS2010): 要将某个库文件导出成dll的时候 可以使用dllexport、实际上也可以使用dllimport, 例如有一个类 class myclas...

C#中StructLayout的特性

先让我们看四个首要的根基概念:   1.数据类型自身的对齐值:   对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节...

用StructLayout特性限定声明结构或类

一、用StructLayout特性限定声明结构或类   公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托 管内存中的物理布局,即类或结构需要按某种方式排列。如果...
  • yi412
  • yi412
  • 2017年04月06日 16:19
  • 417

StructLayout特性

转自:http://www.cnblogs.com/JessieDong/archive/2009/07/21/1527553.html StructLayout特性           公共语言...

Sequential Monte Carlo Methods in Practice

  • 2017年10月23日 11:24
  • 13.26MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于C#[StructLayout(LayoutKind.Sequential)]的问题
举报原因:
原因补充:

(最多只允许输入30个字)