C#从入门到精通(第7版)
上QQ阅读APP看书,第一时间看更新

3.2 变量的声明与赋值

3.2.1 变量的声明

使用变量之前必须先声明变量,即指定变量的类型和名称。简单来说,就是告诉编译器该变量是哪种数据类型,使得编译器知道要给它配置多少空间,以及存放什么样的数据。变量声明非常重要,未经声明的变量是不合法的,无法在程序中使用。

C#中,声明变量由类型名和跟在后面的一个或多个变量名组成,多个变量之间用逗号分开,整个声明过程以分号结束。

例如,先声明一个整型变量num,然后声明3个字符型变量str1、str2和str3,代码如下。

     int num;                  //声明一个整型变量
     string str1, str2, str3;  //声明3个字符串变量

声明变量时,还可以初始化变量,即在每个变量名后加上给变量赋初始值的指令。

例如,声明一个整型变量a,赋值为927,接着声明3个字符串变量并初始化,代码如下。

     int a = 927;                                      //初始化整型变量a
     string x = "支付宝", y = "微信支付", z = "银联";  //初始化字符串变量x、y和z

声明变量时,要注意变量名的命名规则。首先,变量名是一种标识符,应符合标识符的命名规则。其次,变量名是区分大小写的。除此以外,还需要符合以下命名规则。

 变量名只能由数字、字母和下画线组成。

 变量名的第一个符号只能是字母和下画线,不能是数字。

 不能使用关键字作为变量名。

 一旦在一个语句块中定义了一个变量名,那么在变量的作用域内都不能再定义同名的变量。

说明

在C#语言中允许使用汉字或其他语言文字作为变量名,如int年龄 = 21,在程序运行时并不会出现错误,但建议读者尽量不要使用这些语言文字作为变量名。

3.2.2 变量的赋值

C#中,使用赋值运算符“=”(等号)可给变量赋值,将等号右边的值赋给左边的变量。例如,声明一个整型变量sum,并为其赋值2023,代码如下。

     int sum;     //声明一个变量
     sum = 2023;  //使用赋值运算符“=”给变量赋值

初始化变量是一种特殊的赋值方式,它在声明变量的同时为其赋值。

为变量赋值时,等号右边也可以是一个已被赋值的变量。例如,声明两个变量sum和num,为变量sum赋值927,最后将变量sum赋值给变量num,代码如下。

     int sum,num;  //声明两个变量
     sum = 927;    //为变量sum赋值927
     num = sum;    //将变量sum赋值给变量num

误区警示

为多个同类型变量赋相同值时,虽然如下代码是可行的,但不建议采用这种方法。

int a, b, c, d, e; a = b = c = d = e = 0;

3.2.3 变量的作用域

定义变量后,变量会暂存在内存中。变量的作用域指程序代码能够访问该变量的区域,若超出该区域,则编译时会出现错误。根据变量的有效范围,可将变量分为成员变量和局部变量。

1.成员变量

在类体中定义的变量称为成员变量,成员变量在整个类体中都有效。类的成员变量又可分为两种,即实例变量和静态变量(也称类变量)。

例如,声明一个实例变量x和一个静态变量y,代码如下。

     class Test
     {
         int x = 45;         //定义实例变量x,作用域为整个Test类
         static int y = 90;  //定义静态变量y,可以“类名.静态变量”的方式在其他类内使用
     }

在成员变量类型前加上关键字static,这样定义的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至达到整个应用程序。静态变量除了能在定义它的类内存取,还能以“类名.静态变量”的方式在其他类内使用。

2.局部变量

在类的方法体中定义的变量,即在方法内部代码中(“{”与“}”之间)声明的变量,称为局部变量。局部变量只在当前定义的方法内,甚至只在当前代码块内有效,不能用于类的其他方法。

包括方法的参数,都属于局部变量。局部变量的生命周期取决于方法,当方法被调用时,C#编译器为方法中的局部变量分配内存空间;调用结束后,会释放方法中局部变量占用的内存空间,销毁局部变量。

变量的有效范围如图3.1所示。

图3.1 变量的有效范围

【例3.1】局部变量在循环中的使用(实例位置:资源包\TM\sl\3\1)

创建一个控制台应用程序,使用for循环输出0~20的数字。在for语句中声明变量i,此时i就是局部变量,其作用域只限于for循环体,代码如下。

上述代码用到的for循环语句将在第6章中详细讲解,此处了解即可。

编程训练(答案位置:资源包\TM\sl\3\编程训练\)

【训练1】输出京东“6·18”节日名称 使用一个int类型的变量记录京东的年中促销活动节日名称。(提示:“6·18”。)

【训练2】记录登录用户和时间 制作用户登录模块时,使用局部变量记录登录用户和登录时间。(提示:记录登录时间时,需要用到DataTime类,该类用来获取日期相关的信息。)