[摘要]讨论数据类型 .Net中的数据类型是程序员需要认真掌握的基础知识。.NET 中类型的两个基本类别是“值类型”和“引用类型”。基元类型、枚举和结构为值类型。类、字符串、标准模块、接口、数组和委托为引用类型。所有的类型要么是值类型,要么是引用类型,但有一种情况例外。根类型 System.Object ...
讨论数据类型
.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中英文字符和中文字符所占的空间
……