变量与常量
二、变量与常量
(一)变量
1、变量类型
1.1值类型
值类型变量直接存储其数值,主要包括整数类型、浮点类型、以及布尔类型等。由于值类型变量在堆栈中进行分配,因此效率很高,使用值类型的主要目的是为了提高性能。值类型的特性有:
①值类型变量都存储在堆栈中;
②访问值类型变量时,一般都是直接访问其实例;
③每个值类型变量都有自己的数据副本,因此对一个值类型变量的操作不会影响其他变量;
④复制值类型变量时,复制的是变量的值,而不是变量的地址;
⑤值类型变量不能为null,必须有一个确定的值。
1.1.1整数类型
类型 |
说明 |
范围 |
sbyte |
8位有符号整数 |
-128~127 |
short |
16位有符号整数 |
-32768~32767 |
int |
32位有符号整数 |
-2147483648~2174783647 |
long |
64位有符号整数 |
-9223372036854775808~9223372036854775807 |
byte |
8位无符号整数 |
0~255 |
ushort |
16位无符号整数 |
0~65535 |
uint |
32位无符号整数 |
0~4294967295 |
ulong |
64位无符号整数 |
0~18446744073709551615 |
一般常用的是int型。
1.1.2浮点类型
类型 |
说明 |
范围 |
float |
单精度,精确到7位数 |
1.5×10-45~3.4×1038 |
double |
双精度,精确到15~16位数 |
50×10-324~1.7×10308 |
一般常用的是double型。
1.1.3其他
还有日期时间DateTime,枚举类型ENUM,结构类型struct,这些也都是值类型。
1.2引用类型
引用类型是构建C#应用程序的主要对象类型数据。在应用程序执行的过程中,预先定义的对象类型以new创建对象实例,并且存储在堆栈中。引用类型的特性有:
①必须在托管堆中为引用类型变量分配内存;
②必须使用new关键字来创建引用类型变量;
③在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化;
④引用类型变量是由垃圾回收机制来管理的;
⑤多个引用类型变量可以引用同一对象,这种情形下,对一个变量的操作会影响另一个引用的变量。
⑥引用类型被赋值前的值都是null。
所有被称为“类”的都是引用类型,主要包括类、接口、数组、和委托。常用的为字符串型:string。
1.3值类型与引用类型的区别
①从概念上看,值类型直接存储其值,引用类型存储对其值的引用。
②从内存空间上看,值类型是在栈中操作,引用类型是在堆中分配存储单元。
通俗讲,值类型相当于现金,要用直接用;引用类型相当于存折,要用得先去银行取。
2、类型转换
2.1隐式转换
隐式转换是指不需要声明的转换。例如将int型转换为long型,代码为
int i=927;
long j=I;
2.2显式转换
显式转换也称为强制转换,需要在代码中明确地声明要转换的类型。例如将double型的x进行显式转换,代码为
static void Main(string[] args)
{
double x=198.112;
int y=(int)x;
Console.WriteLine(y);
Console.ReadLine();
}
(二)常量
常量就是其值固定不变的量,而且常量的值在编译时就已经确定了。