1
第 3章 常量与变量
3.1 词法说明
3.2 变量
3.3 常量
3.4 运算符和表达式
2
3.1.1 标识符
C#语言的标识符名称必须遵守以下规则:
所有的标识符只能由字母、数字和下划线这三类字符组成,而且第一个字符必须为字母或下划线;
标识符中不能包含空格、标点符号、运算符等其他符号;
标识符区分大小写;
标识符不能与 C#关键字名相同。
标识符不能与 C#中的类库名相同。
3
3.1.2 关键字
关键字( Keyword)也称为保留字,它是由系统预先定义好的标识符,在 C#语言中有特定的含义。 C#语言的关键字如表 3-1所示。
在 C#中,如果在关键字前加上前缀,@”,则可以使它变为合法的标识符。
4
返回目录
5
变量( Variable)是计算机内存中被命名的数据存储单元,其中存储的值是可以改变的。
变量名实际上是一个符号地址,在对程序进行编译时由系统给每个变量分配一个真正的内存地址。
在程序中通过变量取值,实际上就是通过变量名找到相应的内存地址,再从中读取数据或存入数据。
6
3.2.1 变量的命名
符合标识符的命名规则
最好“见名知意”
7
3.2.2 变量的使用
1.定义(声明)变量
变量必须先定义(声明)后使用。
定义变量的一般格式为:
[特征 ] [修饰符 ] 数据类型 变量名 1,变量名 2,…,变量名 n;
例如:
int count; //声明了一个存放整数的变量 count
byte a,b,c; //声明了三个存放 8位无符号整数的变量 a、
b,c
8
2.变量的赋值
一般格式为:
变量名 =表达式;
在程序中,可以给一个变量多次赋值,变量的当前值等于最后一次给该变量所赋的值。
3.变量的初始化
其一般格式为:
[特征 ] [修饰符 ] 数据类型 变量名 1=表达式 1,…,变量名 n=表达式 n;
例如:
int count=5;
另有一种定义变量并对其初始化的方法是:使用 new操作符,调用 C#值类型的默认构造函数并对变量赋予默认值。
9
4.变量的作用域和生存周期
作用域定义了一个变量的可见性和生存周期。
一个变量的生存周期被限制在它自身的作用域内。
作用域可以嵌套。
在内层作用域定义的变量不能和外层作用域中定义的变量重名。
10
3.2.3 变量的类型
1.静态变量
使用 static修饰符定义的变量称为静态变量。
对静态变量的访问只能通过类型名,而不能用实例名访问。
静态变量的初始值就是该类型变量的默认值。
静态变量最好在定义时赋值。
例如:
static int a=10;
11
2.实例变量
不使用 static修饰符定义的变量称为实例变量。
例如:
int a;
类中的实例变量
结构中的实例变量
3.数组元素
数组中每个元素的初始值为该数组元素类型的默认值。
数组元素最好在初始化时被赋值。
12
4.值参数
值参数向方法中传递的是数据的值。
5.引用参数
当一个带有 ref修饰符的参数被声明时,称为引用参数 ;
向它传递的不是值而是对调用变量的引用。
6.输出参数
当一个带有 out修饰符的参数被声明时,称为输出参数。
它只能用于传递方法返回的数据,而不能向方法内部传递参数。
13
7.局部变量
局部变量被局部变量声明语句创建。
当控制权进入 block块,for循环语句或者
switch分支语句时,其中的相关局部变量被创建。当控制权离开 block块,for循环语句或者 switch分支语句时,其中的相关局部变量随即失效。
局部变量不会被自动初始化。
在一个局部变量的有效范围中,在它被声明之前的所有关于它的引用都是错误的。
返回目录
14
常量( Constant)是指在程序执行过程中其值不能被改变的量。
定义常量的一般格式为:
[特征 ] [修饰符 ] const 数据类型 常量名 =表达式;
例如:
const PI=3.14159;
返回目录
15
3.4.1 C#运算符
单目运算符,如 -x,x++,sizeof( x);
双目运算符,如 x+y,x%y;
三目运算符,如条件运算符,?:” 。
16
3.4.2 运算符的优先级和结合性
17
3.4.3 赋值运算符及其表达式
1.一般的赋值运算
赋值表达式的格式如下:
变量 =表达式;
例如:
int i=10;
2.赋值中的类型转换
如果赋值运算发生在不同的数据类型之间,
当它们是兼容的数据类型时,则右边的值自动转换成左边的变量类型。
18
3.复合赋值
复合赋值运算符是双目运算符与赋值运算符的组合,简化了赋值语句的书写,其形式为:
x op=y
例如:
a+=b
a-=b
a*=b
19
3.4.4 算术运算符及其表达式
+(加法运算符,或正值运算符,如 1+2,+3)
-(减法运算符,或负值运算符,如 1-2,-3)
*(乘法运算符,如 1*2)
/(除法运算符,如 1/2)
%(模运算符或称求余运算符,如 7%3=1)
20
3.4.5 关系运算符及其表达式
比较运算符:
<(小于),<=(小于等于)、
>(大于),>=(大于等于),
等式运算符:
= =(等于),!=(不等于)
关系运算符用于两个值进行比较,其运算结果为,true”(真)或,false”(假)。
21
3.4.6 逻辑运算符及其表达式
逻辑表达式的结果是一个布尔值,结果为真则为 true,结果为假则为 false。
C#中的逻辑运算符如下:
&&(逻辑与)
||(逻辑或)
!(逻辑非)。
22
3.4.7 位运算符及其表达式
位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整型或者是可以转换为整型的任何其他类型。
C#中的位运算符如下:
~(按位求反),&(按位与),|(按位或)
^(按位异或),<<(左移),>>(右移)
23
3.4.8 条件运算符及其表达式
条件表达式的一般格式为:
表达式 1? 表达式 2,表达式 3
例如:
max=((a>b)?a:b)
在 C#中第一个操作数必须是一个布尔表达式,
或者是可以转换为布尔类型的表达式,否则编译会出现错误。
24
3.4.9 自增、自减运算符
自增( ++)、自减( --)运算符都是单目运算符,其作用是以一种紧凑格式使变量的值自动增 1或减 1。
运算符后置用法,代表先使用变量,然后对变量增值
运算符前置用法,代表先对变量增值,再使用变量
25
3.4.10 其他运算符1,new运算符
new操作符用于创建一个新的类型实例。
它有三种形式:
( 1)对象创建表达式
( 2)数组创建表达式
( 3)代表创建表达式例如:
class A{}; A a=new A;
int[] int_arr=new int[10];
delegate double DFunc(int x); DFunc f=new
DFunc(5);
26
2,is运算符
,is”是获取类型信息的运算符,其运算结果是布尔值 true或 false。
is表达式的一般格式为:
变量(表达式) is 数据类型
3,as运算符
as运算符也是用来进行相关的数据类型的判断,
as表达式的一般格式为:
表达式 1=表达式 2 as 数据类型
27
4,typeof运算符
typeof运算符可以获得指定类型的
System.Type对象。
typeof表达式的一般格式为:
typeof(类型)
5,sizeof运算符
sizeof运算符用于计算所定义的数值型变量在内存中占多少字节。
sizeof 表达式的一般格式为:
sizeof(变量类型)
这个表达式的结果是一个整数,代表变量所占的字节数。
28
6,checked和 unchecked运算符
checked和 unchecked运算符用来控制整数类型算术运算和相互转换的溢出检查。
其表达式的一般格式为:
checked(表达式)
unchecked(表达式)
checked运算符用来强制编译器检查是否溢出的问题 ;
unchecked运算符用来强制编译器不检查这方面的问题。
返回目录