设为首页
加入收藏
发布文章
  首页   操作系统   系统集成   程序设计   网站设计   图形图象   安全技术   反击技术   硬件DIY   认证考试   免费资源
当前位置:中国E盟 -=> 程序设计 -=> VBasic -=> 正文  
VB.NET特性之FieldOffset特性 << 灵活利用脚本搜索计算机上的特定文件 | vb.Net编程简介之五(轉) >> 
 发布日期:2006-6-17 16:20:18 发布者:[未知]  来源:[本站]  浏览:[]  评论:[ 字体:   

-----FieldOffset特性





在选择显示布局的时候,结构中的所有变量的定义必须包含FieldOffset特性。这个特性指定了距结构开始处的距离(以字节位单位)。



Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Explicit)> _

Structure test

<FieldOffset(0)>Dim Red as Byte

<FieldOffset(1)>Dim Green as Byte

<FieldOffset(2)>Dim Blue as Byte

<FieldOffset(3)>Dim Alpha as Byte

End Structure



StructLayout特性与FieldOffset特性可以实现联合(union)。联合(union)已经被多种语言(如 c和c++)采用,但是vb却不具备这一语言特性。联合(union)是一种可以使得结构中的两个或多个元素在内存中重叠,以及使用不同的名称来指示同一内存位置。



在.NET中,联合(union)的关键在于支持显示结构布局。



如:

Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Explicit)> _

Structure test

<FieldOffset(0)>Dim Red as Byte

<FieldOffset(1)>Dim Green as Byte

<FieldOffset(2)>Dim Blue as Byte

<FieldOffset(3)>Dim Alpha as Byte

<FieldOffset(0)>Dim Value as Integer

End Structure



则这些元素在内存中的位置,如图:






这样就可以通过Value 字段将4个字节作为一个整体进行访问。



'拆分

Dim rgb as test

rgb.Value=&H112233 '1122867

Console.Write("Red={0},Green={1},Blue={2}",rgb.Red,rgb.Green,rgb.Blue)



输出如:








‘合并

rgb.Red=51

rgb.Green=34

rgb.Blue=17

Console.Write(rgb.Value)

输出如:










这样就可以解决很多转换的工作,而且比使用数学运算符更快!


]]>
打印 】【 收藏 】【 推荐 】 
相关文章 推荐文章 热门文章
VB.NET中层次数据绑定Tre..[8.30]
VB.NET中的组件开发[6.17]
VB.net基础:如何获得并显示..[6.17]
VB.NET特性[6.17]
VB.NET实现Winodws式..[6.17]
VB.NET结合EXCEL统计生..[6.17]
 ·暂无
VB中控件大小随窗体大小变化
VFP编程技巧
用VB编写简单的浏览器
用VB制作远程控制软件
用VB做病毒
 评一评
正在读取…
  笔名:
  评论:
   
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款

设置首页 - 加入收藏 - 关于我们 - 联系我们 - 友情连接 - -

Copyright ©2006-2008 中国E盟 Powered By:www.chinaE.org

湘ICP备05004075号