码迷,mamicode.com
首页 > 其他好文 > 详细

变量的作用域

时间:2017-04-08 09:57:17      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:--   第一个   for   编译   i++   space   scope   log   pac   

局部变量的作用域冲突:同名的局部变量不能在同一作用域内申明两次)

例如:

 1 using System;
 2 namespace MyTest.ProCSharp
 3 {
 4     public class ScopeTest
 5     {
 6         public static int Main()
 7         {
 8             int j=20;
 9             for(int i=0;i<10;i++)
10             {
11                 int j=30;
12                 Console.WriteLine(i+j);
13             }
14             return 0;
15         }
16     }
17 }

 

解析:

 技术分享

第一个整形变量j在for循环体开始前定义的,其作用域在于Main内

第二个整形变量j的作用域在循环体内,同时该循环体也在方法体Main的作用域内

因为编译器无法识别区分整形变量j,所以不允许声明第二个整形变量j

 

例如:

 1 using System;
 2 namespace MyTest.ProCSharp
 3 {
 4     public class ScopeTest
 5     {
 6         public static int Main()
 7         {
 8             for(int i=0;i<10;i++)
 9             {
10                 Console.WriteLine(i);
11             }
12             for(int i=9;i>=10;i--)
13             {
14                 Console.WriteLine(i);
15             }
16             return 0;
17         }
18     }
19 }

解析:

技术分享

因为整型i在这里对于各自的循环体来说是局部变量,作用域在各自循环体内而不是Main方法中(就近原则)

所以这里允许同时申明整型变量i,不存在作用域冲突

 

变量的作用域

标签:--   第一个   for   编译   i++   space   scope   log   pac   

原文地址:http://www.cnblogs.com/weile0769/p/6680728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!