C# 变量的作用域

 
在 C#中,把声明为类型级的变量看作是字段,而把在方法中声明的变量看作局部变量。
 
变量的作用域是指可以访问该变量的代码区域。一般情况下,作用域的范围是规定的:
 
1. 成员变量的作用域限定该变量所属的类
 
2. 局部变量的作用域限定从声明该变量的语句块开始到对应语句块结束的封闭花括
号之间。
 
3. 在 for、while 等语句中声明的局部变量作用域限定在该循环体内。
 
4. 同名的局部变量不能在同一作用域内声明两次。
 
1. 案列:变量的作用域
 
public class Program 
{ public static void Main()
    { for (int i = 0; i < 10; i++)
        { 
            Console.WriteLine(i); 
        } 
        for (int i = 9; i >= 0; i--) 
        { 
            Console.WriteLine(i);
        } 
    }
}
这段代码使用一个 for 循环打印出从 0~9 的数字,再打印从 9~0 的数字。
 
重要的是在同一个方法中,代码中的变量 i 声明了两次。可以这么做的原因是在两次声明中,i 都是在循环内部声明的,所以变量 i 对于循环来说是局部变量。
 
public static void Main()
{ 
    int j = 20; 
    for (int i = 0; i < 10; i++) 
    { 
        int j = 30; Console.WriteLine(j + i); 
    } 
    Console.ReadLine(); 
}
再看上面的代码,如果试图编译它,就会产生错误。
 
其原因是:
for 循环之前定义的变量 j 其作用域从定义处开始到 Main 方法结束。
 
第二个 j 的作用域在循环体的作用域内,该作用域嵌套在 Main 方法的作用域内,编译器无法区别这两个变量 j,所以不允许声明第二个变量 j。
 
如果字段和局部变量同名,局部变量优先级高于字段变量。
 
 
2. 案例:字段与局域变量作用之间的冲突
 
class Program 
{ 
    static int j = 20; //字段
    public static void Main() 
    { 
        int j = 30; //局部变量 Console.WriteLine(j);
     } 
}
在 Main 方法中声明的新变量 j 隐藏了同名的类级变量,所以在运行这段代码时,会显示数字 30。
 
如果要引用类级变量,可以使用语法
 
this.字段名
 
对象名.字段名
 
类名.字段名
 
采用哪种格式,与字段和方法的存储类型有关。例如:
 
class Program 
{ 
    static int j = 20; //静态字段                 
    public static void Main()//静态方法                   
    { 
        int j = 30; //局部变量
                    
        Console.WriteLine(Program.j); 
    } 
}
程序的运行结果是输出 20。

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值