1.6 变量
如前所述,在使用变量之前,必须声明其名称和类型。在首次声明变量前,可以给它设置初始值,也可以在稍后的代码中赋值。例如,下面的代码片段声明两个简单类型变量。第一个是int类型,在声明时赋值。第二个是double类型,在后面的代码行中赋值。
int count = 3;
double total;
// 中间的代码……细节忽略
total = 34.3;
使用关键字true或false来给一个bool类型变量赋值。
bool blah;
bla h = true;
布尔类型变量常被用来作为代码执行的条件标识,如下例所示:
bool error = false; // 初始化标识。
// ...
// 在后面的程序中(伪代码):
if (发生某种情况) {
//把标识设置为真,表示错误发生了。
error = true;
}
// ...
// 在后面的代码中:
if (error) {
// 伪代码。
Take corrective action
}
我们稍后才谈到if语句的一个C#流程控制语句。
可以给一个char类型变量赋予一个字符值,赋值时把该值(单个Unicode字符)放在单引号里面:
char c = 'A';
1.6.1 变量命名约定
多数变量名采用所谓的Camel命名法,首字符小写,后续的每个词首字符大写,而其他字符则小写。
在后面章节中介绍更多对象概念时,我们还会对命名规则加以详述。
例如,下面的变量就依据C#变量命名约定来命名:
int grade;
double averageGrade;
string myPetRat;
bool weAreFinished;
如前所述,C#关键字不能用作变量名。
int float; // 无法通过编译——“float”是关键字
1.6.2 变量初始化
在C#中,变量被声明时并不同时被自动赋予初始值,在访问变量值前,必须明确地为其赋值。在下面的代码片段中,声明了两个整型变量foo和bar。代码给变量foo赋了值,但没有给变量bar赋值,然后尝试把两个变量相加。
int foo;
int bar;
foo = 3; // 初始化foo,但没有初始化bar。
foo = foo + bar; // 本行不能被编译
如果试图编译上例,将会得到针对最后一行的编译错误信息:
error CS0165: use of unassigned local varrialle 'bar'
编译器的意思是,变量bar已被声明,不过未被赋值。改正错误的方法是在执行相加操作前,明确地给bar赋值:
int foo;
int bar;
foo = 3;
bar = 7; // 明确地初始化两个变量。
foo = foo + bar; // 这一行能被正确编译。
有关变量初始化的内容,其复杂度已经超出我们这里的讨论范围。在第13章里,你将学习到,当与对象的“内部工作”打交道时,还有不同的自动初始化规则。