
2.1 变量和常量
变量是所有编程语言中最基本的概念,它关系到数据的存储。可以将计算机内存中的变量看做一个盒子,可以在盒子里放东西,也可以从盒子里取东西。变量也是如此,可以通过变量存取数据。本节详细介绍变量的定义和使用方法。
2.1.1 变量的声明
变量是用来存储数据的,不同的数据需要用不同的变量来存储,就像盒子有大有小,盒子中放置的东西也就有多有少,变量也是如此,根据存储的数据类型不同,变量在内存中占用的空间也不相同,这就涉及另一个概念—数据类型。C#语言提供了很多数据类型,用于声明变量,并存储在相应的变量中。表2.1显示了C#常用的数据类型。
表2.1 C#常用的数据类型

了解数据类型之后,就可以学习变量的声明了。C#中变量声明的语法如下:
<访问修饰符> 数据类型 变量名称;
<访问修饰符>表示访问修饰符是可选项,不是必须添加的。此概念和用法将在后面章节中详细讨论。如需要声明一个整型变量,如下示例:
private int number;
其中private为访问修饰符,在此可以不写,int为整型变量,number为变量名称。
2.1.2 变量的命名规范
C#中声明变量也要遵循一定规则,使编码更规范。简单规则如下:
❑不能使用C#中的关键字,如class、int、bool等在C#中有特殊意义的字符。
❑变量名通常不能有中文字符。
❑以字母或下划线开头,如age、_name等。
❑使用多个单词组成变量名时,使用骆驼命名法,即第一个单词的首字母小写,其他单词的首字母大写,如myName、showAge等。
2.1.3 变量的赋值
声明了变量之后,就可以在后面的程序中使用。可以在声明变量时给变量初始化,即赋初值,也可在后面的使用中给变量赋值。下面声明两个变量,并给其赋初值:
int b=0; string name="令狐冲";
注意
赋值时必须根据数据类型给变量赋值。如下代码则会出现错误:
int b=2.4; string name=11;
由于b变量声明为整型数据类型,赋值时赋给其浮点型数据,生成时会出错。而name变量声明为字符串类型,赋给其整型数据也是错误的。为了使用方便,C#中提供了解决这种问题的机制,即数据类型转换,将在后面的章节中详细讲述。
2.1.4 常量的定义和使用
【本节示例参考:\源代码\C2\Example_Test】
常量在任何一种编程语言中是非常重要的,常量和变量的不同之处在于,常量在整个应用程序中保持同一个值,而变量根据需要可以赋予不同的值。常量在声明时必须与特定的数据类型相联系,语法如下:
<访问修饰符> const 数据类型 常量名称=常量值;
例如,const int minAge=10; const float pei=3.14;
注意
常量在声明时必须初始化,即给常量赋值,否则会出现编译错误。
下面通过简单的示例来演示变量和常量的使用方法,示例代码如代码2.1所示。
代码2.1 常量和变量的使用示例
01 using System; 02 using System.Collections.Generic; 03 using System.Linq; 04 using System.Text; 05 namespace Example_Test 06 { 07 /// <summary> 08 /// 此程序用来计算存款收益 09 /// </summary> 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 const float interestRate = 0.35f; //常量interestRate(银行利率) 15 int money = 1000; //存款数 16 string name = "令狐冲"; 17 float moneyAll = money * interestRate + money; //计算存款总数 18 Console.Write(name); 19 Console.WriteLine(moneyAll); 20 Console.ReadKey(); 21 } 22 } 23 }
代码2.1中,定义了常量interestRate,因为银行的利率是不会随意改变的,所以用常量比较合适。第15行代码定义了银行的存款数,可以采用float和double型,在这里用int型是为了简化一些。通过代码第17行的计算,得到了用户名为“令狐冲”在当前利率下的存款总数。
说明
Console.Write()和Console.WriteLine()、Console.ReadKey()都是控制台语句,具体用法将在本章的2.7节详细介绍。

图2.1 代码2.1的输出结果
此段代码的运行结果如图2.1所示。
2.1.5 var类型的变量
如果对JavaScript语言有所了解,则对var类型的数据就不陌生。var类型是C#3.0版本中引入的一个新的用法,在之前的其他版本中没有。事实上,var仅仅是一个关键字,并不是一个新的数据类型。可以用var声明任何类型的局部变量,它只是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,并且只能是局部变量。语法如下:
var 变量名称=变量值;
下面的声明是正确的:
var age=12; var name=”令狐冲”; var flag=true;
上面的声明等同于下面的变量声明:
int age=12; var name="令狐冲"; bool flag=true;
使用var声明变量必须遵循以下规范:
❑在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式。下面的语句编译时会提示出错。
var age; age=12;
❑使用var声明一个变量后,不能给此变量赋予另一种数据类型的值。下面的语句会出现编译器错误。
var integer=10; integer="令狐冲";
❑使用var声明的变量,初始化时不能为空。下面的语句是不符合规范的,会出现编译器错误。
var name=null;
❑var声明仅限于局部变量。
代码2.2演示了在程序中使用var声明不同数据类型的变量。
代码2.2 不同数据类型变量的声明Program.cs
01 namespace Example_2 02 { 03 class Program 04 { 05 static void Main(string[] args) 06 { 07 //声明字符串型、布尔型、整型、var变量 08 string strname = "范跑跑"; 09 bool flag = true; 10 int integer = 20; 11 var bookname = "雪山飞狐"; 12 var age = 12; 13 //显示变量值 14 Console.WriteLine("字符串值="+strname); 15 Console.WriteLine("布尔值="+flag); 16 Console.WriteLine("整型值="+integer); 17 Console.WriteLine("VAR字符串值="+bookname); 18 Console.WriteLine("VAR整型值="+age); 19 Console.ReadKey(); 20 } 21 } 22 }
代码2.2第11行声明var类型变量bookname,赋初值为字符串,那么bookname即为字符串类型的变量。第12行变量age赋初值为整型数据,此时age就是整型变量。图2.2为演示代码2.2的运行结果。

图2.2 代码2.2运行结果
提示
如果能够明确知道变量的数据类型,建议使用该数据类型,而不是var。