导读:在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。
在C++中有一种类型叫做联合体(也叫共用体),它的关键字为union,在使用上与结构struct非常相似,可以包含任何的结构类型数据,但它又有一个非常独特的特性,那就是所有的数据都指向一个地址。
这个意思你可以理解为:联合体中的所有数据都是引用一个内存块中相同地址的数据,当我们改变这个联合体内任何一种数据的值时,其他的数据的值都会随之改变。
这对于未知类型的数据非常有效,你可以使用联合体装载一个数据,然后分析其数据是否有效,或者可以对某些特殊的类型进行位运算,获取其特殊位置的数值。
但在VB.NET或C#中,根本没有union关键字让我们声名联合体,但该怎么做才能声名联合体呢?
这需要用到结构属性!
让我们看看如何将下面的C++联合体代码转换为一个VB.NET的联合结构吧!
- union myunion
- {
- char b;
- short s;
- int i;
- }
|
这个联合体大小为4个字节,其各个数据分别表示为单字节、双字节、四字节的整数,在运行期间其任何数据的改变都会影响其他数据。
- Improts System.Runtime.InteropServices '引入运行时非托管数据管理服务
|
引入结构属性,精确控制结构中元素的位置
- <StructLayout(LayoutKind.Explicit)> _
- Structure MyUnion
-
- <FieldOffset(0)> Dim b As Byte
- <FieldOffset(0)>
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
-
文章列表显示太密集,该如何解决
-
Vs2008中net2.0项目工具箱没有Ajax选项卡,如何解决
-
新闻详细页的静态化有关问题,不能整个页面静态化啊
-
小弟我用.net2003,请教微软的树控件上小弟我怎么取得选中的哪个节点的ID值
-
视频播放插件解决思路
-
天数判断,寻求简洁方法,该如何解决
-
C#可定制的数据库备份和恢复程序
-
.net怎么获取页面的浏览数次
-
怎么获取url中传过来的文件
-
简单的JS有关问题,送分
-
在asp.net中打开的新窗口中进行提交的时候,刷新父页面,为何父页面总是回到第一页解决方法
-
想从 网站开发(asp.net) 转型 做软件开发(用C#) 不知道做哪个方向,请大家给点建议,多谢
-
DataGrid表单显示的有关问题(待)
-
怎么实现aspx.net初始化页面
-
正则表达式疑问,该如何解决
-
请问怎么对表格施行动态的+行+列随意插入行列
-
局域网发邮件如何绘制表格
-
实在搞不定,请兄弟们帮小弟我看看这段存储过程
-
周末愉快,帮个小忙,简化在线编辑器,该如何解决
-
面向过程的.NET(一工作代码)
|