讨论数据类型
.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 中英文字符和中文字符所占的空间是一致的。