C#编程兵书
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 变量和常量

作为最基本的功能,程序需要操作数据来完成运算,当需要保存数据的值或计算结果时,便需要使用变量。简单来说,变量是经过计算机赋值在内存中其值可改变的量。这里的可改变是指程序运行期间的可改变。

有时需要在程序中将某个量固定下来,使之保持不变。比如程序中的圆周率,它是不需要改变的,同时也不希望程序运行期间被误改,这时就用到了常量这个概念。常量在程序运行期间,其值是不能改变的。

2.2.1 命名变量

在C#中,使用变量的基本原则是先定义后使用。首先来看为变量命名的方法。其规范如下。

● 必须以字母或下画线开头。

● 只能由字母、数字、下画线组成,不能包含空格、标点符号、运算符及其他符号。

● 不能与C#关键字同名,如class、new等。

需要注意的是,C#中的变量名可以以“@”作为前缀,这时就可以使用“@”+关键字作为变量名,如“@name”。但是“@”本身并不是变量名的一部分,例如在本例中,真正的变量名仍然是“name”。下面是一些合法的变量命名示例。

      int i;             //整型变量
      string user_name;  //字符串型变量
      char @name;        //字符型变量

下面是一些不合法的变量命名示例。

      int No.1;   //       不能包含标点符号
      char 1_new;        //以数字开头
      string static; //    与关键字同名

2.2.2 变量的声明和使用

上面介绍了C#中的变量命名规范,下面介绍如何声明和使用变量。变量的声明非常简单,只需要在数据类型后面加上变量名即可,语法如下。

      数据类型 变量名;                   //声明变量
      变量名 = 值;                      //给变量赋值
      或
      数据类型 变量名 = 值;            //声明变量并赋值

另外,还可以使用变量类型关键字,如“static”来定义变量的类型。C#变量中的变量大体分为3种类型,它们有各自的特点,分别介绍如下。

1.实例变量

不带任何关键字声明的变量称为实例变量,如int i。实例变量在其所在的方法调用结束后,其数据将会被清除掉,所占的内存空间也会被释放。

2.静态变量

使用“static”关键字修饰的变量称为静态变量。如static int count=0。同实例变量相对,静态变量在函数调用结束后仍保留变量值,直到程序结束前一直存在。另外,静态变量不能在类的方法中定义,因为没有任何意义。

静态变量的这种性质是很重要的。例如,在一个聊天室程序里,可以使用静态变量记录浏览者人数,在每一次新到用户或用户离开的时候,都应该保留目前浏览者人数。

3.局部变量

局部变量是指在一个独立的代码块中声明的变量,它只在这个代码块中有效,一旦离开这个范围,将不再存在。

C#中没有全局变量,因为它是面向对象的语言,可以使用类来实现其功能。

声明变量并赋值后,就可以通过直接引用变量名来使用它,如:

      s1="Hello World";
      Console.WriteLine(s1);

下面通过一个示例来展示一下变量的声明和使用,代码如下。

        class Test         //                   Variable类
          {
              static void Main(string[] args)   //程序入口:Main方法
              {
                  string name;               //声明字符串型变量name姓名
                  char sex;                  //声明字符型变量sex性别
                  int age;                   //声明整型变量age年龄
                  name = "李四";             //赋值为“李四”
                  sex = '男';                //赋值为‘男’
                  age = 25;                  //赋值为25
                  Console.WriteLine(name);  //从控制台输出变量name赋值为的值
                  Console.WriteLine(sex);   //从控制台输出变量sex赋值为的值
                  Console.WriteLine(age);   //从控制台输出变量age赋值为的值
                  Console.ReadLine();       //使输出窗口等待用户输入后再关闭
              }
          }

运行结果为:

      李四
      男
      25

注意:变量都要先声明再赋值,然后才能使用。

2.2.3 常量的声明和使用

同变量一样,常量也用来赋值为数据。它们的区别在于,常量一旦初始化就不再发生变化,可以理解为符号化的常数。

使用常量可以使程序变得更加灵活、易读,例如,可以用常量PI来代替3.1415926,一方面程序变得易读,另一方面,需要修改PI精度时,无须在每一处都修改,只需在代码中改变PI的初始值即可。

常量的声明和变量类似,需要指定其数据类型、常量名及初始值,并需要使用const关键字,例如:

      [public] const double PI=3.1415;

其中,[public]关键字可选,并可用private、protected、internal或new代替。

声明变量并赋值后,就可以通过直接引用变量名来使用它,如:

      double r=3.2;
      double area=PI*r*r;
      Console.WriteLine(area);

下面通过一个示例来展示一下常量的声明和使用,代码如下。

          class Test
         {
            static void Main(string[] args)
            {
                const double pi = 3.14;                 //声明常量pi存储圆周率
                Console.WriteLine("圆周率为:"+pi);      //从控制台输出pi
                pi = 3.1415926;                         //给变量pi重新赋值,语法错误
                Console.WriteLine("圆周率为:" + pi);     //从控制台输出pi的新值
                Console.ReadLine();                      //将光标停住,等待用户输入后再关闭窗口
            }
        }
      }

运行结果如下:

      圆周率为:3.14
      圆周率为:3.14

上例代码中声明常量pi并赋值3.14,后又重新赋值为3.1415926,然后输出pi,从运行结果可以看到pi的结果没有变化。这就说明const常量在程序运行过程中,其值是不允许改变的。所以避免了反复使用常量造成的计算错误。