变量的作用范围

Posted wesley1680

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量的作用范围相关的知识,希望对你有一定的参考价值。

1.类中所有变量的默认修饰符是private。

2.局部变量必须先初始化才能使用,全局变量(类的成员变量)可以不初始化,默认值为0;

 1 static void Main(string[] args)
 2         {
 3             //M();
 4             //M1();
 5             //M2();
 6 
 7             int m;
 8             if (n > 5)
 9             {
10                 m = 1;
11             }
12             else
13             {
14                 m++;
15             }
16 
17             Console.ReadKey();
18         }
19 
20         static int n = 10;
View Code

如上代码,局部变量m没有赋值,所以不能使用m(m++报错)。

 

Q:

如图中的代码,输入的结果是?(10,11,12)

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             M();
 6             M1();
 7             M2();
 8             Console.ReadKey();
 9         }
10 
11         static int n = 10;
12 
13         static void M()
14         {
15             Console.WriteLine(n);
16         }
17 
18         static void M1()
19         {
20             n++;
21             Console.WriteLine(n);
22         }
23 
24         static void M2()
25         {
26             n++;
27             Console.WriteLine(n);
28         }
29 
30     }
View Code

n初始化的值是10,调用M1后,赋值一次,n=11,调用M2后,赋值一次,n=12.不要与值类型传参混淆了。(值类型传递的是副本,所以最初的n的值不会改变,这是错误的思想,这里是赋值,不是传参)。

以上是关于变量的作用范围的主要内容,如果未能解决你的问题,请参考以下文章

python中的闭包

变量超出范围不起作用

自动类型转换强制类型转换作用域整型表数范围

JavaScript-变量的作用域闭包预解析

JS (全局作用域)

[ 深度解剖C语言 ] 关键字 ---- auto register