C#实践教程(第2版)
上QQ阅读APP看书,第一时间看更新

2.4 常量

变量是值允许被改变的,而常量是值不允许被改变的。程序中总是存在一些数据,这些数据的值长而复杂,容易出错。使用常量来表示这些数据,为数据定义一个简易名称来参与程序的编写,既使程序简单易懂,又使数据不易出错。

如将数值3.1415926定义为常量Pi,该数值是圆周率,但在程序中使用3.1415926数值较长,容易出错,而使用常量Pi替代数值,使程序清晰且不易出错。

常量是指在使用过程中不会发生变化的量,C++中可以含有常量指针、指向常量的变量指针、常量方法和常量参数,但是C#中已经删除了某些细微的特性,只能把局部变量和字段声明为常量。应用程序中使用常量的好处如下:

□ 常量使程序更加容易修改。

□ 常量能够避免程序中出现更多的错误。

□ 常量使用易于理解的、清楚的名称替代了含义不明确的数字或字符串,使程序更加方便阅读。

常量也可以叫作常数,它是在编译时已知并且在程序运行过程中其值保持不变的值。C#中声明常量需要使用const关键字,并且常量必须在声明时初始化。如下代码声明并初始化了一个静态常量:

class Program
{
public const string USERPHONE = "13213103456";
}

读者也可以使用一个const关键字同时声明多个常量,但是这些常量之间必须使用逗号进行分隔。代码如下:

class Program
{
public const int P = 12, S = 23, M = 45, N = 55;
}

注意

使用const关键字声明常量时,通常使用大写字母。如果没有使用const,即使指定了固定的值,也不算是常量。

使用const关键字定义常量非常简单,但是同时需要注意以下几点:

□ const必须在字段声明时就进行初始化操作。

□ const只能定义字段和局部变量。

□ const默认是静态的,所以它不能和static同时使用。

□ const只能应用在值类型和string类型上,其他引用类型常量只能定义为null。否则会引发错误提示“只能用null对引用类型(string类型除外)的常量进行初始化”。

常量和变量经常会在程序开发中用到,但是什么情况下使用常量,什么情况下使用变量呢?很简单,使用常量的情况一般有两种:

□ 用于在程序中一旦设定就不允许被修改的值,如圆周率π。

□ 用于在程序中被经常引用的值,如银行系统中的人民币汇率。

如使用了常量和变量的程序,计算圆的面积,其执行代码和效果如练习2-3所示。

【练习2-3】

将圆周率定义为常量,将圆的半径定义为变量,分别计算半径为2和半径为4的圆的面积,代码如下:

int r = 2;                                            //半径变量的声明和初始化
const double P = 3.14;                                //定义圆周率常量
Console.WriteLine("半径2的圆,面积为:{0}", P * r * r);  //输出圆的面积
r = 4;                                                      //修改半径的值为4
Console.WriteLine("半径4的圆,面积为:{0}", P * r * r);  //输出圆的面积

按F5键运行上述代码,其执行结果如图2-5所示。同样输出的是“P * r * r”表达式的值,由于变量值的改变,其输出结果也不同。

图2-5 求圆的面积

在练习3的例子中,变量的作用并没有体现出来。在C#中,一个功能通常被定义为一个方法,而功能中需要赋值的变量是方法的参数,为方法的参数赋值,运行该方法,即可实现需要的功能。