C#中的数据类型根据其定义可以分为两种:一种是值类型,另一种是引用类型。这两种类型的差异在于数据的存储方式,值类型的变量本身直接存储数据。而引用类型则存储实际数据的引用,程序通过此引用找到真正的数据,
3.1.1 值类型
值类型变量直接存储其数据值,主要包含整数类型、浮点类型以及布尔类型等。值类型变量在堆栈中进行分配,因此效率很高,使用值类型主要目的是为了提高性能。值类型具有如下特性:
值类型变量都存储在堆栈中。
访问值类型变量时,一般都是直接访问其实例。
每个值类型变量都有自己的数据副本,因此对一个值类型变量的操作不会影响其他变量。
复制值类型变量时,复制的是变量的值,而不是变量的地址。
值类型变量不能为null,必须具有一个确定的值。
值类型是从System.ValueType类继承而来的类型,下面详细介绍值类型中包含的几种数据类型。
1. 整数类型
整数类型代表一种没有小数点的整数数值,在C#中内置的整数类型如表3.1所示。
表3.1 C#内置的整数类型
类 型 说 明 范 围
sbyte 8位有符号整数 -128~127
short 16位有符号整数 -32 768~32 767
int 32位有符号整数 -2 147 483 648~2 147 483 647
long 64位有符号整数 -9223 372 036 854 775 808~9 223 372 036 854 775 807
byte 8位无符号整数 0~255
ushort 16位无符号整数 0~65 535
uint 32位无符号整数 0~4 294 967295
ulong 64位无符号整数 0~18 446 744 073 709 551 615
【例3.1】创建一个控制台
应用程序,在其中声明一个int类型的变量mr,并初始化为2010;声明一个byte类型的变量kj,并初始化为255,最好输出。代码如下。(实例位置:光盘\mr\example\第3章\3.1)
代码位置:光盘\mr\example\第3章\3.1\Test02\Test02\Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test02
{
class Program
{
static void Main(string[] args)
{
{
int mr = 2010; //声明一个int类型的变量mr
byte kj = 255; //声明一个byte类型的变量kj
Console.WriteLine("mr={0}", mr); //输出int类型变量mr
Console.WriteLine("kj={0}", kj); //输出byte类型变量kj
Console.ReadLine();
}
}
}
}
2. 浮点类型
浮点类型变量主要用于处理含有小数的数值数据,浮点类型主要包含了float、double和decimal这3种数值类型。表3.2列出了这3种数值类型的描述信息。
表3.2 浮点类型及描述
类 型 说 明 精 度 范 围
float 4字节IEEE单精度浮点数 精确到7位数 1.5×10-45~3.4×1038
double 8字节IEEE双精度浮点数 精确到15~16位数 50×10-324~1.7×10308
decimal 16字节浮点数 精确到28~29位数 1.0×10-28~1.7×1028
【例3.2】下面的代码就是将数值强制指定为float类型。实现代码如下。
01 float theMySum = 9.27f; //使用f强制指定为float类型
02 float theMuSums = 1.12F; //使用F强制指定为float类型
说明:如果要将数值强制指定为double类型,则需要使用d或D进行设置。
【例3.3】下面的代码就是将数值强制指定为double类型。实现代码如下。
01 double myDou = 927d; //使用d强制指定为double类型
02 double mudou = 112D; //使用D强制指定为double类型
注意:如果需要使用float类型变量时,必须在数值的后面跟随f或F,否则编译器会直接将其作为double类型处理;也可以在double类型的值前面加上(float),对其进行强制转换。
3. 布尔类型
布尔类型主要用来表示true/false值,一个布尔类型的变量,其值只能是true或者false,不能将其他的值指定给布尔类型变量,布尔类型变量不能与其他类型之间进行转换。
说明:在定义全局变量时,如果没有特定的要求不用对其进行初始化,整数类型和浮点类型的默认初始化为0,布尔类型的初始化为false。