变量

来源:互联网 发布:雷神3彩蛋 知乎 编辑:程序博客网 时间:2024/06/10 04:41

变量的初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待。这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。C#有两个方法可确保变量在使用前进行了初始化:● 变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其值就默认是0(类和结构在后面讨论)。● 方法的局部变量必须在代码中显式初始化,之后才能在语句中使用它们的值。此时,初始化不是在声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了它的值,就会产生错误。

下面的写法编译时会报错:

using System;using System.Collections.Generic;using System.Text;namespace C_Sharp{    class Program    {        static void Main(string[] args)        {            int i;            Console.WriteLine(i);//使用了未赋值的局部变量            Console.ReadKey();        }    }}

 

类型推断

C#也提供了一种通用的类型声明,比如我要声明一个名字可以通过string name ="wang",但是我也可以通过var name =''wang'。通过name.GetType(),我们取到的类型为System.String;也就是说c#可以根据值获来判断它的类型。

 

变量的作用域

变量的作用域是可以访问该变量的代码区域。一般情况下,确定作用域有以下规则:

● 只要类在某个作用域内,其字段(也称为成员变量)也在该作用域内(在C++、Java和Visual Basic中也是这样)。

● 局部变量存在于表示声明该变量的块语句或方法结束的封闭花括号之前的作用域内。

● 在for、while或类似语句中声明的局部变量存在于该循环体内(C++程序员注意,这与C++的ANSI标准相同。Microsoft C++编译器的早期版本不遵守该标准,在循环停止后这种变量仍存在)。

 

常量

顾名思义,常量是其值在使用过程中不会发生变化的变量。在声明和初始化变量时,在变量的前面加上关键字const,就可以把该变量指定为一个常量:

const int a = 100;   // 这个值是不可以被改变的。 

常量具有如下特征:

1.必须在声明时被初始化;

2.常量的值必须能在编译时用于计算。因此,不能用从一个变量中提取的值来初始化常量。如果需要这么做,应使用只读字段

3.常量总是静态的。但注意,不必(实际上,是不允许)在常量声明中包含修饰符static。