Focus 1 值类型的使用
在.NET Framework 中最简单的数据类型 基本数字类型和布尔类型都是值类型。
值类型变量在内存中直接存储数据而不是该数据存储位置的引用地址。
值类型的数据存储在一个名叫栈的内存区域中,运行环境能对直接他们进行快速的创建、读取、更新以及删除操作。
通用的值类型有三种分别是:
内部定义基本类型、用户自定义类型和枚举类型。
内部定义值类型
.NET Framework 提供了一些最基本的内部定义值类型,其他的类型都是用他们来组合创建的。
所有的内建数值类型都是值类型,但你要以工作需要的值的大小和精度要求为基础来选取你数值类型。
下面前6个类型为常用的数值类型 后3个则更能增加数据的精确度。
System.SByte 简称sbyte 长度1个字节 表示范围在-128~127 通常用于声明有符号字节数值
System.Byte 简称byte 长度1个字节 表示范围在0~255 通常用于声明无符号字节数值
System.Int16 简称short 长度2个字节 表示范围在 -32768 到 32767 通常用于声明一些内部操作数值和其他一些特殊数值
System.Int32 简称Integer/int 长度4个字节 表示范围在 -2147483648 到 2147483647 通常用于表示几乎所有日常数值和计数数值
System.UInt32 简称UInteger/uint 长度4个字节 表示范围在0 到 4294967295 通常用于声明日常所用的所有正数数值
System.Int64 简称long 长度8个字节 表示范围在-9223372036854775808 到 9223372036854775807 通常用于声明超大型数值
System.Single 简称single/float 长度4个字节 表示范围在-3.402823E+38 到 3.402823E+38 通常用于声明浮点型数值
System.Double 简称double 长度8个字节 表示范围在-1.79769313486232E+308 到 1.79769313486232E+308 通常用于声明精确的超大型浮点数值
System.Decimal 简称decimal 长度16个字节 表示范围在-79228162514264337593543950335 到79228162514264337593543950335 通常用于声明财务和科学计算需要的大的精确数值
注:
操作系统优化了32位整型数据(Int32 和 UInt32),所以通常用这两种类型来定义计数数据和别的经常被访问整型数值。
对于浮点型数据的操作Double 类型是最有效的,因为计算机的硬件对其进行了优化。
其他的值类型还有:
System.Char 简称char 长度2个字节 通常用于定义单个字符
System.Boolean 简称bool 长度4个字节 定义的值固定为True/False
System.IntPtr --- 长度由平台决定 用于定义表示内存地址变量
System.DateTime 简称date 长度8个字节 范围在1/1/0001 12:00:00 AM 到 12/31/9999 11:59:59 PM 用于表示时间。
在.NET Framework 中定义了300多个值类型,不过常用的就是上面说的这些。
当值类型的两个变量之间赋值操作时一个变量的数值会被复制到另一个变量的栈中,以两个相同的存储值存在。
虽然值类型表现为简单数值,但是它依然拥有对象的功能。你可以通过它来调用方法比如ToString()方法。这都是继承了System.Object 基类所赐。
.NET Framework 中所有的类型都派生于System.Object
这种关系可以帮助创建能过在整个Framework中使用的通用类型系统。
Framework 2.0 告诉我们: 如果想有能力决定一个变量被赋值时间,那么就定义一个nullable变量吧。
比如:如果你需要定义一个存储用户回答是与否的问题答案的变量在一个表单中,可是用户没有做任何回答,这样这个变量就需要存储一个空值的答案。
你可以这样定义:
Nullable<bool> b = null;
或者写成
bool? b = null;
如此以来我们就可以存储用户没有作答的问题答案了。同时我们还可以通过该变量的HasValue方法和Value字段去判断该变量是否被赋值并读取它。
if(b.HasValue){
Console.WriteLine("b is {0}.",b.Value);
}
else{
Console.WriteLine(" b is not set.");
}
接下来该看 怎样自定义值类型变量了