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