ASP.NET网页编程之.NET中设置团结布局的办法和团结体的特...
计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解)</p>导读:在举行某些算法的C言语编程的时分,必要使几种分歧范例的变量寄存到统一段内存单位中。也就是利用掩盖手艺,几个变量相互掩盖。这类几个分歧的变量配合占用一段内存的布局,在C言语中,被称作“共用体”范例布局,简称共用体,也叫团结体。在C++中有一品种型叫做团结体(也叫共用体),它的关头字为union,在利用上与布局struct十分类似,能够包括任何的布局范例数据,但它又有一个十分共同的特征,那就是一切的数据都指向一个地点。
这个意义你能够了解为:团结体中的一切数据都是援用一个内存块中不异地点的数据,当我们改动这个团结体内任何一种数据的值时,其他的数据的值城市随之改动。
这关于未知范例的数据十分无效,你可使用团结体装载一个数据,然后剖析其数据是不是无效,大概能够对某些特别的范例举行位运算,猎取其特别地位的数值。
但在VB.NET或C#中,基本没有union关头字让我们申明团结体,但该怎样做才干申明团结体呢?
这必要用到布局属性!
让我们看看怎样将上面的C++团结体代码转换为一个VB.NET的团结布局吧!
[*]unionmyunion
[*]{
[*]charb;//单字节整数,在c言语顶用char范例来暗示单字节整数
[*]shorts;//双字节整数
[*]inti;//四字节整数
[*]}
这个团结体巨细为4个字节,其各个数据分离暗示为单字节、双字节、四字节的整数,在运转时代其任何数据的改动城市影响其他数据。
[*]ImprotsSystem.Runtime.InteropServices引进运转时非托管数据办理服务
引进布局属性,准确把持布局中元素的地位
[*]<StructLayout(LayoutKind.Explicit)>_
[*]StructureMyUnion
[*]设置字段的偏移值,设为0便可
[*]<FieldOffset(0)>DimbAsByte单字节整数
[*]<FieldOffset(0)>DimsAsShort双字节整数
[*]<FieldOffset(0)>DimiAsInteger四字节整数
[*]EndStructure
这就是在.NET中设置团结布局的办法,C#中于VB.NET中的设置办法相同,这里就不做赘述了。
上面来先容团结体的特征使用,就以下面我们方才申明的团结体布局为例,上面的代码将为我们演示团结体的特征:
[*]DimMUAsNewMyUnion
[*]MsgBox(String.Format("{0}{1}{2}",MU.b,MU.s,MU.i))000
[*]MU.s=Int16.MaxValue
[*]MsgBox(String.Format("{0}{1}{2}",MU.b,MU.s,MU.i))2553276732767
[*]MU.b=12
[*]MsgBox(String.Format("{0}{1}{2}",MU.b,MU.s,MU.i))123252432524
[*]MU.i=0
[*]MsgBox(String.Format("{0}{1}{2}",MU.b,MU.s,MU.i))000
下面的代码能够更直不雅地显现数据在内存中的变更,每当改动团结数据时,其他的数据也会跟着内存的变更而变更。
固然,利用团结体也无限制,那就是.NET的团结体只合用于值范例,没法使用在援用范例和指针中,你没法设置字符串(String)或是数组进进团结范例,这一点必要十分的注重!
固然,.NEt中的团结布局体其实不只要下面的用法,你能够发扬本人的设想力,好比能够:
[*]<StructLayout(LayoutKind.Explicit)>_
[*]StructureMyUnion2
[*]<FieldOffset(0)>Dimb1AsByte
[*]<FieldOffset(1)>Dimb2AsByte
[*]<FieldOffset(2)>Dimb3AsByte
[*]<FieldOffset(3)>Dimb4AsByte
[*]<FieldOffset(0)>DimiAsInteger
[*]<FieldOffset(0)>DimuiAsUInteger
[*]EndStructure
这个布局能够猎取一个有或无标记的四个字节整数每个字节的数据,而不必要本人写算法来剖析了。
测试代码:
Code:
[*]DimMUAsMyUnion2
[*]MsgBox(MU.i&":"&MU.ui)0:0
[*]MsgBox(String.Format("{0}{1}{2}{3}",Hex(MU.b1),Hex(MU.b2),Hex(MU.b3),Hex(MU.b4)))0000
[*]MU.b1=255:MU.b2=255:MU.b3=255:MU.b4=255
[*]MsgBox(String.Format("{0}{1}{2}{3}",Hex(MU.b1),Hex(MU.b2),Hex(MU.b3),Hex(MU.b4)))FFFFFFFF
[*]MsgBox(MU.i&":"&MU.ui)-1:4294967295
有个问题想请教你一下,呵呵:)你觉得将来学什么方向比较好,我真是想不出来,知道的太少了,麻烦了。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页:
[1]