变量的域
比較這兩段代碼:
代碼一:
1int?i;
2????????????string?text;
3????????????for(i=0;i<10;i++)
4????????????{
5????????????????text?=?"Line"?+?Convert.ToString(i);
6????????????????Console.WriteLine("{0}",?text);
7????????????}
8????????????Console.WriteLine("Last?text?output?in?loop:{0}",?text);
9????????????Console.ReadKey(); 代碼二:
1int?i;
2????????????string?text="";
3????????????for(i=0;i<10;i++)
4????????????{
5????????????????text?=?"Line"?+?Convert.ToString(i);
6????????????????Console.WriteLine("{0}",?text);
7????????????}
8????????????Console.WriteLine("Last?text?output?in?loop:{0}",?text);
9????????????Console.ReadKey(); 代碼一錯(cuò)誤編譯不了:提示--錯(cuò)誤?1?使用了未賦值的局部變量“text”?
而代碼二可以編譯通過。
原因:主要涉及到分配給text變量的內(nèi)存空間,實(shí)際上任何變量都是這樣。只聲明一個(gè)簡(jiǎn)單的變量類型,并不會(huì)引起其他的變化。
只有在給變量賦值后,這個(gè)字才占用一塊內(nèi)存空間。如果這種占據(jù)內(nèi)存空間的行為在循環(huán)中發(fā)生,該值實(shí)際上定義為一個(gè)局部值,在循環(huán)的外部會(huì)超出其作用域。
代碼一:
1int?i;
2????????????string?text;
3????????????for(i=0;i<10;i++)
4????????????{
5????????????????text?=?"Line"?+?Convert.ToString(i);
6????????????????Console.WriteLine("{0}",?text);
7????????????}
8????????????Console.WriteLine("Last?text?output?in?loop:{0}",?text);
9????????????Console.ReadKey(); 代碼二:
1int?i;
2????????????string?text="";
3????????????for(i=0;i<10;i++)
4????????????{
5????????????????text?=?"Line"?+?Convert.ToString(i);
6????????????????Console.WriteLine("{0}",?text);
7????????????}
8????????????Console.WriteLine("Last?text?output?in?loop:{0}",?text);
9????????????Console.ReadKey(); 代碼一錯(cuò)誤編譯不了:提示--錯(cuò)誤?1?使用了未賦值的局部變量“text”?
而代碼二可以編譯通過。
原因:主要涉及到分配給text變量的內(nèi)存空間,實(shí)際上任何變量都是這樣。只聲明一個(gè)簡(jiǎn)單的變量類型,并不會(huì)引起其他的變化。
只有在給變量賦值后,這個(gè)字才占用一塊內(nèi)存空間。如果這種占據(jù)內(nèi)存空間的行為在循環(huán)中發(fā)生,該值實(shí)際上定義為一個(gè)局部值,在循環(huán)的外部會(huì)超出其作用域。
轉(zhuǎn)載于:https://www.cnblogs.com/yfcomeon/archive/2007/10/25/937308.html
總結(jié)
- 上一篇: IIS6+asp.net 2.0+HTT
- 下一篇: 我在思考的时候神告诉我的(大学里的爱恋)