关于变量作用域问题

来源:互联网 发布:类似snapchat特效软件 编辑:程序博客网 时间:2024/05/16 06:42

首先,在使用变量之前要声明变量。声明的变量在其作用域内有效,其作用域包括定义变量的代码块和嵌套在其中的代码块。

c#编译器需要每个变量在有初始值之后才能使用该变量。而且 如果变量时类或者结构中的成员,如果没有显式初始化,默认状态下,其初始值为0.。在方法中的变量,必须显式的初始化,否则在使用时会出错。

全局作用域变量会被局部作用域同名变量覆盖,使用全局作用域的,可以通过定义该变量的类引用。

在使用变量前对其进行声明和初始化。例如在某一代码块内声明一个变量,但未初始化,而该变量在循环代码块内进行初始化,赋给该变量的值在循环代码块结束时就丢失了。在循环后使用该变量是未初始化的。解决办法是尽量在声明变量时同时初始化该变量。

注意,只声明一个变量不会引起什么变化,对变量赋值后,这个值才占用一块内存空间。如果赋值是在循环内发生,该值实际上定义为一个局部值。但变量并未局部化到循环上。



问题:

 

static void Main(string[] args)        {            //int i;            string test;           // for (i = 0; i < 10; i++)            {                test = "line";                Console.WriteLine(test);            }            Console.WriteLine(test );            Console.ReadKey();        }

static void Main(string[] args)        {            int i;            string test;            for (i = 0; i < 10; i++)            {                test = "line";                Console.WriteLine(test);            }            Console.WriteLine(test );            Console.ReadKey();        }

后者编译不通过我能理解,但是前者为什么能通过呢??请注意我不是在问前者的解决办法。。。

希望各位大神为人解惑啊!

0 0