1、变量声明语法:datatype identifier;
eg:int i;//该语句声明了int变量i。如果在表达式中直接使用此变量会报错,除非对该变量进行初始化。
2、声明变量的方法
(1) int i;
i=1;//先声明,在赋值(初始化)。
(2) int x=0;//声明并初始化他的值。
(3) int x=0,y=0;//在一条语句中可声明多个变量,但所有的变量都必须具有相同的数据类型。
(4) int x=0;
bool y=false;//不同类型的变量声明,必须放在不同的语句中。
3、变量的初始化
*变量在使用前必须初始化,若未初始化就使用则C#的编译器会把它当做错误来开袋。
C#y有两个方法可确保变量在使用前进行了初始化:
(1)类或结构中的字段变量,若没有显示初始化,则在创建这些变量时其默认值就是0,空之类的值。
(2)方法的局部变量必须在代码中显式初始化,之后才能在语句中使用它们的值。编译器如果检测到局部变量在初始化之前就使用了它的值,就会产生错误。
4、类型推断
C#允许使用Var 关键字来声明变量,编译器会根据变量的初始化值自动“推断”变量的类型。
eg:int someNumber=0; 就变成 var someNumber=0;
类型推断需要遵循一些规则:
(1)变量必须初始化。否则,编译器就没有推断变量类型的依据。
(2)初始化器不能为空。
(3)初始化器必须放在表达式中。
(4)不能把初始化器设置为一个对象,除非在初始器中创建一个新对象。
声明了变量,推断出类型后,就不能改变变量类型了。
/*初始化器:int[] nums=new int[]{1,2,3} 数组后边复制用的大括号就可以看成是‘初始化器’。*/
5、变量的作用域
变量的作用域指的是可以访问该变量的代码区域。一般情况下,确定作用域遵循以下的规则:
(1)只要类在某个作用域内,其字段(也称为成员变量)也在该作用域内。
(2)局部变量存在于表示声明该变量的块语句或方法结束的右花括号之前的作用域内。
(3)在for、while或类似语句中声明的变量存在于该循环体内。
1、局部变量的作用域冲突
同名的局部变量不能再同一作用域内声明两次。
2、字段和局部变量的作用域冲突
某些情况下,可以区分名称相同(尽管其完全限定的名称不同)、作用域相同的两个标识符。
原因:C#在变量之间有一个基本区分,它把在类型级别声明的变量称为字段,而把在方法中申请的变量看做局部变量。