1、变量
变量是计算机语言中能储存计算机结果或能表示值的抽象概念。
1.1 什么是变量
变量是一种使用方便的占位符,可以根据需要随时改变变量中所存储的数据值。变量可以通过变量名访问,变量名是变量在程序中的标识。变量值是指它所代表的内存块中的数据。
1.2 变量的数据类型
变量是用来存储值得所在处,它们有名字和数据类型。
1.2.1 值类型
值类型变量是指内存中直接存储数据值的变量,主要包含整数类型,浮点类型及布尔类型等。***值类型采用堆栈分配存储地址,效率高。***值类型具有如下特性:
(1)复制 值类型变量时,复制的是变量的数据值,而不是变量的地址。
(2)值类型变量不能为空,必须具有一个确定的值。

  • 整数类型
    整数类型是整数数值,C#将整数分为8种类型,如下表所示。

类型

说明

范围

sbyte

有符号8位整数

-128~127

byte

无符号8位整数

0~255

short

有符号16位整数

-32768~32767

ushort

无符号16位整数

0~65535

int

有符号32位整数

-2147489648~2147483647

uint

无符号32位整数

0~42994967295

long

有符号64位整数

-2^63~2 ^63

ulong

无符号64位整数

0~2^64

考虑内存使用的优化,影响程序运行速度,一般选取合适数值类型选择最小的范围类型。

  • 浮点类型
    浮点类型变量主要用于处理含有小数的数值类型,根据小数位数不用C#提供了单精度浮点型float和双精度浮点型double,如下表所示。

类型

说明

范围

float

32位单精度

1.5E-45~3.4E38

double

64位双精度

5.0E-324~1.7E.08

如果不做任何设置,包含小数点的数值都被认为是double类型,如果要将数值以float类型来处理,就应该通过强制使用f或F将其指定为float类型。若要强制转化为double则应该通过强制使用d或者D。

  • decimal类型
    decimal类型表示精度更高的浮点型,decimal类型的信息如下表所示。

类型

说明

范围

decimal

128位十进制数

1.0E-28~7.9E28

decimal类型,用来定义财务方面的数据。定义decimal类型时要加后缀m,如果没有后缀m,则数字将被视为double类型并会生成编译器错误。

  • 布尔类型
    布尔(bool)类型表示真或者假。布尔类型变量,其值只能是true或者false,不能将其他的值赋给bool类型。
    在定义全局变量时,若没有特定要求不用对上述值类型进行初始化,整数类型和浮点类型默认初始化为0,bool类型默认初始化为false。
  • 字符类型
    为保存单个字符的值,C#支持char数据类型 ,Char类型的字面量是用单引号括起来的,如‘M’。常见的字符类型如下表所示。

转义序列

字符

\ ’

单引号

\ "

双引号

\

反斜杠

\0


\a

报警

\ b

退格

\ f

换页

\ n

换行

\r

回车

\t

水平制表符

\ v

垂直制表符

1.2.2 引用类型
引用类型是构建C#应用程序的主要对象数据类型。C#的所有引用该类型均派生自System.Object。引用类型的特点如下:

  1. 引用类型都存储在托管堆上。
  2. 引用类型可以派生出新的类型
  3. 引用类型可以包含null值
  4. 引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
  5. 引用类型的对象总是在进程堆中分配(动态分配)。

值类型和引用类型的区别如下:

1.所有继承System.Value的类型都是值类型,其他类型都是引用类型。
2.引用类型可以派生出新的类型,而值类型不能。
3.引用类型存储在堆中,而值类型既可以存储在堆中也可以存储的栈中。
4.引用类型可以包含null值,值类型不能(可空类型功能允许将null赋给值类型)。
5.引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将赋值包含的值。当比较两个值类型时,进行的是内容比较;而比较两个引用类型时,进行的是引用比较。

1.2.3 枚举类型
枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储7个有意义的值。若要定义这些值,可以使用枚举类型。编写与日期相关的应用程序时,经常需要使用年,月,日,星期等日期数据,可以将这些数据组织成多个不用名称的枚举类型。使用枚举可以增加程序的可读性。在C#中使用关键字enum类声明枚举。