日期:2012-10-17  浏览次数:20474 次

讨论数据类型


.Net中的数据类型是程序员需要认真掌握的基础知识。.NET 中类型的两个基本类别是“值类型”和“引用类型”。基元类型、枚举和结构为值类型。类、字符串、标准模块、接口、数组和委托为引用类型。

所有的类型要么是值类型,要么是引用类型,但有一种情况例外。根类型 System.Object ,它非常特殊,因为它既不是引用类型也不是值类型,而且不能实例化。因此,类型 Object 的变量可包含值类型或引用类型。

不过无论值类型还是引用类型,它们的声明方式都是一样的,当然它们的语义是不同的。





值类型


值类型直接存储在堆栈上,要么在数组中,要么在另一个类型中。值类型总是直接访问;不可能创建对值类型的引用。值类型的值不能为空引用,值类型的变量赋值会创建所赋的值的副本。



值类型副本创建意义举例

Dim i As Int32 = 10

Dim j As Int32 = i

j = 20 'i=10






基础类型
什么是基础类型呢?简单的讲就是如果一个类型的值是可以使用常数来描述的,该类型就是基础类型。当表达式的操作数均为基元类型常数时,编译器是可以在编译时计算表达式的。这种表达式被称为常数表达式。基本类型总是有初始值的。



VB.Net定义的基础类型:整数(包括字节),浮点、布尔、日期、字符和字符串。



分类
类型
存储分配

整数值类型
Byte
1

Short
2

Integer
4

Long
8

浮点值类型
Single
4

Double
8

Decimal
16

布尔
Boolean
2

日期
Date
8

字符
Char
2

字符串
String
取决于实现平台




如果大家有心的话,可以从Boolean和Char的分配空间看出:.Net是基于Unicode来表示数据的,所以在.Net中英文字符和中文字符所占的空间是一致的。