| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:求教 变量作用域的问题。
只看楼主 加入收藏
outman888
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-1-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
求教 变量作用域的问题。
  static void Main(string[] args)
        {

            string text;

            for (int i = 0; i < 10; ++i)
            {
                text = "TEXT"+Convert.ToString(i);
                Console.WriteLine("{0}", text);
            }
            Console.WriteLine("{0}", text);
            Console.ReadKey();
        }
此代码 错误提示:使用了未赋值的局部变量“text”,但是text已经在for循环里赋值了。根据书上说 作用域不同,在循环里赋于的值会在循环结束后(即循环的域结束后)丢失。
可是如果我在text声明时就初始化(string text = " ";),按理应该是在循环里赋予的值在循环结束后应会丢失,那么 在循环后再次输出text的值 发现却是最后一次循环产生的值。 这我就不明白了。按理应该是在循环结束后text的值还是 " "才对啊?
搜索更多相关主题的帖子: void 
2012-01-07 21:06
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
收藏
得分:3 
只要在作用域内变量就不会消失,跟是否循环赋值没有关系。

2012-01-08 09:41
wypdragon
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:110
注 册:2011-11-19
收藏
得分:3 
作用域的范围是看你在哪里声明,声明的是什么类型,而不是看你哪里赋值;变量在循环之前声明,循环结束后变量还存在,在循环中声明,循环结束后就不存在了。字符串变量只要变量存在,你重新给变量赋值,变量就会指向你最后赋予的值。
2012-01-08 16:18
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:3 
字符串string 是引用类型,你在循环里给text赋值以后,即将引用指向了值为“最后一次循环产生的值”的对象,那么自然的函数里的text也指向了该对象,它们的对象是同一个,输出的值肯定也就一样,即“最后一次循环产生的值”

不想停留。。。
2012-01-09 12:14
kang282338
Rank: 2
等 级:论坛游民
帖 子:14
专家分:32
注 册:2011-9-12
收藏
得分:3 
在循环里赋于的值会在循环结束后(即循环的域结束后)丢失。
这句话你从什么书看的,举个简单的例子,我在循环之前就有以个整型变量,并且有值,那么我对这个值在循环加1十次,照这句话说那么是不是我循环的语句就没有了。
所以这是不可能的,首先代码是一句一句往下走的,在走到你text声明之处电脑不是人,他不可能知道你下面又赋值,所以肯定报错了
2012-01-10 18:02
sterling
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2012-1-12
收藏
得分:3 
static void Main(string[] args)
        {

            string text;

            for (int i = 0; i < 10; ++i)
            {
                text = "TEXT"+Convert.ToString(i);
                Console.WriteLine("{0}", text);
            }
            Console.WriteLine("{0}", text);
            Console.ReadKey();
        }
text没有初始化 就使用了,(相当于删除掉for循环里面),
2012-01-12 16:51
月光雪山
Rank: 2
等 级:论坛游民
威 望:4
帖 子:36
专家分:97
注 册:2012-1-10
收藏
得分:3 
回复 楼主 outman888
赋值的作用域决定变量的作用域,此方法中的全局变量,声明时必须给初值,在for循环中赋值作用域就只在for循环中有用
2012-01-12 20:13
zzia510
Rank: 1
等 级:新手上路
帖 子:25
专家分:3
注 册:2012-12-26
收藏
得分:0 
很给力哦。。。我正对这个有迷惑呢
2013-01-12 11:46
快速回复:求教 变量作用域的问题。
数据加载中...
 
   



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

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