中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
.NET中的数据类型的一些变化
作者:未知 时间:2005-07-27 21:52 出处:CSDN 责编:chinaitpower
              摘要:.NET中的数据类型的一些变化

  今天在做一个关于IC卡读写的程序,用到了一个IC卡读写器,有一个配套的dll动态库和一些库函数的说明,但是调试的时候总是会遇到一些奇怪的现象。VB6的示例中可以的操作,在我的程序中就会出现“未将对象引用设置到对象的实例”等等错误。折腾了半天也没有什么进展。后来用.NET的升级向导将那个VB6的实力程序升级,发现模块中函数的声明有一些变化。

VB6中声明:

Declare Function srd_45d041 Lib "mwic_32.dll" (ByVal icdev As Long, ByVal page As Integer, ByVal offset As Integer, ByVal le As Long, ByVal data_buffer$) As Integer

升级后.NET的声明:

Declare Function srd_45d041 Lib "mwic_32.dll" (ByVal icdev As Integer, ByVal page As Short, ByVal offset As Short, ByVal le As Integer, ByVal data_buffer As String) As Short

  VB6Long类型在.NET中变成了Integer,而Integer变成了Short。就这么一点小小的问题搞得我郁闷了半天。把程序调试通过以后,我查了一下MSDN Library,发现.NET的数据类型和VB6的存在一些变化。具体的可以看下面这两张表。

1  VB6中的数据类型

数据类型

存储空间大小

范围

Byte

1 个字节

0 255

Boolean

2 个字节

True False

Integer

2 个字节

-32,768 32,767

Long
(长整型)

4 个字节

-2,147,483,648 2,147,483,647

Single
(
单精度浮点型)

4 个字节

负数时从 -3.402823E38 -1.401298E-45;正数时从 1.401298E-45 3.402823E38

Double
(
双精度浮点型)

8 个字节

负数时从 -1.79769313486232E308
-4.94065645841247E-324
;正数时从4.94065645841247E-324 1.79769313486232E308

Currency
(
变比整型)

8 个字节

-922,337,203,685,477.5808 922,337,203,685,477.5807

Decimal

14 个字节

没有小数点时为 +/-79,228,162,514,264,337,593,543,950,335,而小数点右边有 28 位数时为 +/-7.9228162514264337593543950335;最小的非零值为 +/-0.0000000000000000000000000001

Date

8 个字节

100 1 1 日 到 9999 年 12 31

Object

4 个字节

任何 Object 引用

String
(
变长)

10 字节加字符串长度

0 到大约 20 亿

String
(
定长)

字符串长度

1 到大约 65,400

Variant
(
数字)

16 个字节

任何数字值,最大可达 Double 的范围

Variant
(
字符)

22 个字节加字符串长度

与变长 String 有相同的范围

用户自定义
(利用 Type

所有元素所需数目

每个元素的范围与它本身的数据类型的范围相同。

 

2  VB.NET中的数据类型

Visual Basic 类型

公共语言运行库类型结构

名义存储分配

取值范围

Boolean

System.Boolean

2 个字节

True False

Byte

System.Byte

1 个字节

0 255(无符号)。

Char

System.Char

2 个字节

0 65535(无符号)。

Date

System.DateTime

8 个字节

0001 1 1 日凌晨 0:00:00 9999 年 12 31 日晚上 11:59:59

Decimal

System.Decimal

16 个字节

0 +/-79,228,162,514,264,337,593,543,950,335 之间不带小数点的数;
0
+/-7.9228162514264337593543950335 之间带 28 位小数的数;最小非零数为
+/-0.0000000000000000000000000001 (+/-1E-28)

Double
(双精度浮点型)

System.Double

8 个字节

负值取值范围为 -1.79769313486231570E+308 -4.94065645841246544E-324;正值取值范围为 4.94065645841246544E-324 1.79769313486231570E+308

Integer

System.Int32

4 个字节

-2,147,483,648 2,147,483,647

Long
(长整型)

System.Int64

8 个字节

-9,223,372,036,854,775,808 9,223,372,036,854,775,807

Short

System.Int16

2 个字节

-32,768 32,767

Object

System.Object(类)

4 个字节

任何类型都可以存储在 Object 类型的变量中。

Single
(单精度浮点型)

System.Single

4 个字节

负值取值范围为 -3.4028235E+38 -1.401298E-45;正值取值范围为 1.401298E-45 3.4028235E+38

String
(变长)

System.String(类)

取决于实现平台

0 到大约 20 亿个 Unicode 字符。

用户定义的类型
(结构)

(从System.ValueType继承)

取决于实现平台

结构中的每个成员都有由自身数据类型决定的取值范围,并与其他成员的取值范围无关。

 

从两张表中可以清楚地看到VB6中的Integer类型是2个字节长度的,Long4个字节长度的。在.NETInterger变成了4个字节,Long8个字节。多了一个Short类型,是2个字节的。

数据类型的字长不一样导致了调用库函数时数据类型转化的冲突,所以也就出现了很多奇怪的问题,不过现在问题顺利解决,希望这些经验能对.NET的初学者有一些帮助。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有