C#与.NET程序员面试宝典 3.1.5 面试题24:如何理解C#中变量的作用域
这个问题切入点比较小,目的是要考察应聘者对于C#类型语法的掌握。应聘者在回答此类问题时,不仅仅要考虑是否存在作用域的问题,而且要思考相关的设计问题。
【出现频率】★★★★
【关键考点】
变量的作用域
变量的作用域规则
【考题分析】
在C#语言中,变量的作用域是指可以访问该变量的代码区域。变量的作用域具有以下3个规则:
(1)只要变量所属的类在某个作用域内,其字段(也称为成员变量)也在该作用域中。
(2)局部变量存在于声明该变量的块语句内,或者方法结束的大括号之前的作用域。
(3)在for或while循环中声明的变量,只存在于该循环体内。
依据C#中变量的作用域规则,笔者编写一个简单的实例,代码如下所示。
using System;
namespace MyConsole
{
class ScopeValue
{
static int k = 44; //定义一个变量K
public static void Main()
{
int k = 88; //定义一个变量K
/*两个循环中都使用了i ,但都可以正常输出,因为每个i的作用域都
在其对应的两个循环体内。*/
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }
for (int i = 0; i < 20; i++) { Console.WriteLine(i); }
/*在这段代码中,第一个K的作用域是整个类,也就是类的字段,
第二个K的声明会替代第一个K,所以该程序会输出88.*/
Console.WriteLine(k);
Console.WriteLine(ScopeValue.k);
Console.Read();
}
}
}
【答案】
在C#语言中,变量的作用域是指可以访问该变量的代码区域。只要变量所属的类在某个作用域内,其字段(也称为成员变量)也在该作用域中。局部变量存在于声明该变量的块语句内,或者方法结束的大括号之前的作用域。在for或while循环中声明的变量,只存在于该循环体内。