什么是静态变量?
的有关信息介绍如下:用 static 修饰符声明的字段称为静态变量。静态变量在包含了它的那个类型的静态析构函数(第 10.11 节)执行之前就存在了,在关联的应用程序域终止时终止。局部变量是通过局部变量声明来声明的,此声明可以出现在块、for 语句、switch 语句或 using 语句中。局部变量的生存期是程序执行过程中的某一“段”,在此期间,一定会为该局部变量保留存储。此生存期从进入与它关联的块、for 语句、switch 语句或 using 语句开始,一直延续到对应的块、for 语句、switch 语句或 using 语句的执行以任何方式结束为止。(进入封闭块或调用方法会挂起(但不会结束)当前的块、for 语句、switch 语句或 using 语句的执行。)如果以递归方式进入父块、for 语句、switch 语句或 using 语句,则每次都创建局部变量的新实例,并且重新计算它的局部变量初始值设定项(如果有的话)。局部变量不自动初始化,因此没有默认值。出于明确赋值检查的目的,局部变量被视为初始未赋值。局部变量声明可包括局部变量初始值设定项,在此情况下变量被视为在它的整个范围内(局部变量初始值设定项中提供的表达式内除外)已明确赋值。在局部变量的范围内,在局部变量声明符之前的文本位置引用该局部变量是编译时错误。局部变量的实际生存期依赖于具体实现。例如,编译器可能静态地确定块中的某个局部变量只用于该块的一小部分。根据这种分析,编译器生成的代码可能会提前回收该变量的存储(相对于包含该变量的生存期)。局部引用变量所引用的存储的回收与该局部引用变量(第 3.9 节)的生存期无关。foreach 语句和 try 语句的特定 catch 子句也声明局部变量。对于 foreach 语句,局部变量是一个迭代变量(第 8.8.4 节)。对于特定的 catch 子句,局部变量是一个异常变量(第 8.10 节)。foreach 语句或特定的 catch 子句所声明的局部变量被视为在它的整个范围内已明确赋值。MSDN有各种变量的详细说明