标题:刚学问一个作用域的问题
只看楼主
q332010372
Rank: 2
等 级:论坛游民
帖 子:52
专家分:61
注 册:2010-7-27
结帖率:44.44%
已结贴  问题点数:16 回复次数:1 
刚学问一个作用域的问题
代码1.申明string类型变量text,在for循环中初始化text,然后在for循环中输出text的值,不会报错。
static void Main(string[] args)
        {
            int i;
            string text;
            for (i = 0; i < 10; i++) {
                text = "Line" + Convert.ToString(i);
                Console.WriteLine("{0}", text);
            }
                Console.ReadKey();
        }

代码2.申明string类型变量text,并初始化值为空。然后在for循环中给text赋值,并显示text的值。最后在for循环外显示出text的最终结果,不会报错。
static void Main(string[] args)
        {
            int i;
            string text="";
            for (i = 0; i < 10; i++) {
                text = "Line" + Convert.ToString(i);
                Console.WriteLine("{0}", text);
            }
            Console.WriteLine("Last text output in loop:{0}", text);
                Console.ReadKey();
        }
    }

代码3.申明string类型变量text,在for循环中初始化text,然后在for循环中输出text的值,最后在
for循环外显示出text的最终结果,结果报错。并提示,使用了未赋值的局部变量"text"。
static void Main(string[] args)
        {
            int i;
            string text;
            for (i = 0; i < 10; i++) {
                text = "Line" + Convert.ToString(i);
                Console.WriteLine("{0}", text);
            }
            Console.WriteLine("Last text output in loop:{0}", text);
                Console.ReadKey();
        }

代码3中,text在for循环中初始化,赋给text的值在for循环结束时就会丢失。
代码2中,for循环外初始化后再在for循环中改变他的值。
这是否说明,for循环无法更改未初始化变量的值?
如果是,那么代码1中for循环操作的“变量text”,是什么?

[ 本帖最后由 q332010372 于 2011-8-3 22:17 编辑 ]
2011-08-03 22:16
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
得分:16 
很明显 代码1中输出的是一个局部变量。因为你对TEXT做了一个全局声明,而在FOR循环中才给他赋值的,在FOR循环中这个TEXT就变成了局部变量了;
代码2中 给TEXT声明并且赋值 这个TEXT就是全局的变量 在这个类里都可以输出他 ;
代码3中 TEXT这个局部变量出了FOR循环 就会为空 你在外面在输出他 肯定会报错出现未赋值;
2011-08-05 23:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-346735-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.095533 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved