三、变量与常量(值类型,引用类型,两者区别,枚举类型,类型转换,变量声明,变量作用域,变量赋值,常量)

继续复习。

C#可以使用三种内存:堆栈(栈)stack、托管堆(堆)managed heap和非托管堆 unmanaged heap

堆栈(栈):性能高,不灵活,只能分配固定大小的数据类型。

托管堆(堆):可分配任意大小的数据,程序员只负责分配内存。.net框架的垃圾回收器负责其自动回收释放。灵活但效率稍低。

非托管堆:不受.net框架控制,是windows 管理的内存,在C#中只能使用不安全的指针访问。

变量

变量用于在内存中存储特定值,并且这个值是可以变化的

变量有名称、数据类型、值三要素。

变量名是在程序源代码里的标识,类型确定它所代表的内存大小和类型(堆和栈),值代表它在内存块中的数据。

变量在使用前必须先定义(声明和赋值)

//语法1 数据类型 变量名
int iMyAge;//声明整型变量
iMyAge=1;//给变量赋初值
//语法2 数据类型 变量名=值
int iMyAge=1;//初始化变量
//你可以一次声明多个变量,它们都是相同类型;也可以一次声明多个变量,并赋值
int iFirstVar,iSecondVar;
int iFirstVar=1,iSecondVar=2;

使用变量时,可以直接使用名称,但是未赋值的变量不能使用,否则会造成编译错误

变量的作用域

每个语句块内都可以声明变量,这些变量叫语句块的局部变量。

局部变量的作用域是指:声明变量的语句块内,位于声明变量之后的区域(包括嵌套在内的所有语句块)

在一个语句块内定义了一个变量,那么在它的作用域内都不能定义同名的变量,否则会出现编译错误。

在C#中没有全局变量。

常量

常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型。

常量可以被当作常规的变量,只是他们的值在定义后不能被修改。

数据类型

C#完全支持.net框架通用类型系统(CTS)定义的类型,所有类型都是用类定义的。

C#中既可以使用通用类型系统定义的类型,也可以使用自定义类型,所有的类型都是从System.Object派生出来的。

C#语言的类型分为两大类:值类型和引用类型。

值类型有简单类型、枚举类型、结构类型

引用类型有类类型、数组类型、接口类型、委托类型

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

1.它们存储的位置不一样。2.如果是引用类型,当两个对象指向同一个地方,修改某一个的时候,其他对象的值会发生改变。

枚举类型

枚举是一组命名整形常量,枚举类型是用enum关键字声明的

C#枚举是值类型数据。换句话说,枚举包含自己的值,且不能继承或传递继承。

声明枚举的一般语法:

enum <enum_name>{
          enumeration list  
}
//这里enum_name是枚举的类型名称
//enumeration list 是一个用逗号分隔的标识符列表
//枚举列表中的每一个符号代表一个整数值,一个比前的符号大的整数值,默认情况下第一个枚举符号的值是0
enum Days{Sun,Mon,tue,Wed,thu};
//但是你也可以自己定义每个符号的值
enum Days{Sun=77,Mon=11,tue=22,Wed=33,thu==55};

类型转换

类型转换从根本上来说是类型铸造,或者说是把数据从一种类型转换为另一种类型。

在C#中类型铸造就两种方式:

隐式类型转换-这种转换是C#默认的以安全方式进行转换,不会导致数据丢失。例如从小的整数类型转换为大的整数类型,从派生类型转换为基类。

显示类型转换-显示类型转换,即强制类型转换。显示类型转换需要强制转换运算符,而且强制转换会造成数据丢失。

double d = 5673.74;
            int i;

            // 强制转换 double 为 int
            i = (int)d;
原文地址:https://www.cnblogs.com/baixiao/p/7704305.html