C#码农笔记:从第一行代码到项目实战
上QQ阅读APP看书,第一时间看更新

2.4.1 变量

声明变量就是定义一个符号,然后通过赋值把数据存放在变量中。声明变量时要指定其类型,目的是让应用程序在运行时能够准确地分配内存空间,因此变量的声明语法如下:

    <变量类型> 变量名 [ = <初始值>];

比如声明一个整型的变量x并赋值为100,代码如下:

    int x = 100;

在声明变量时也可以不赋初始值,如

    int x;

还可以用default关键字赋默认的值,如

    int x = default(int);

可以简写为

    int x = default;

因为int类型的默认值为0,所以x中存储的值为0。

既然变量是可变的,那么它的“变”是如何表现出来的呢?请考虑下面代码片段

    // 声明变量
    double data = default(double);
    // 输出变量的默认值
    Console.WriteLine("变量的默认值:{0}。", data);
    // 修改变量的值
    data = 126.357721d;
    // 输出变量的当前值
    Console.WriteLine("变量的当前值:{0}。", data);
    // 再次修改变量的值
    data = 99.0000012d;
    // 再次输出变量的当前值
    Console.WriteLine("变量的当前值:{0}。", data);

在上面代码中,首先声明了一个double类型(双精度数值,后面在讲述数据类型时会提及)的变量data,输出其默认值;接着两次修改变量的值,并在每次修改后输出变量data的当前值。其运行后的输出结果如图2-7所示。

图2-7 输出变量被修改后的值

完整的示例代码请参考\第2章\Example_5。

通过这个示例可知,变量的“变”是指它被声明后,只要生命周期没有结束,程序代码可以在任意时刻改变变量的值。

1.使用var关键字声明变量

变量的声明还可以使用var关键字,其数据类型将由编译器根据赋值自动推断,例如:

    var a = "xyz";
    var b = 0.0135d;
    var c = 3005000U;

通过对变量a的赋值,可以推断出它的数据类型为string(字符串)。同理,变量b的数据类型为double(双精度浮点数),变量c的数据类型为uint(无符号的32位整数)。

var关键字声明变量时必须马上初始化(即赋值),否则编译会失败。这是因为编译器在缺少变量初始值的情况下无法判断出变量的数据类型。下面代码会发生错误

完整的示例代码请参考\第2章\Example_6。

2.变量的生命周期

变量是用来临时存储数据的,应用程序结束后变量中保存的数据就不复存在。而且变量是存放在内存中的,必然会消耗系统资源,因此变量不可能一直存在于内存中,在合适的时候要将其销毁以释放被占用的系统资源。

在上面的代码中,定义了一个Test类,在类中定义了变量bt,因为它是在类级别定义的,所以不仅在整个类中可以访问变量bt,而且在类实例被回收之前,变量bt将一直存在;变量num则不同,因为它是在Do方法中定义的,方法以外的代码无法访问它,并且当Do方法执行完毕后,变量num会被销毁。