什么是作用域(scope)?简单来说,是变量在程序中的起作用范围。一般来说,一个变量只有在特定的区域内是有意义的,那么,限定这个变量的有效区域的代码范围就是这个变量的作用域。作用域的使用能够减少名字冲突,即在不同的作用域可以存在相同名字的变量。在C#中,变量的作用域在他所处的最近的一对花括号内。还有一个被称作全局作用域的,它的范围够覆盖能创建的新文件的全部上下文。作用域运算符:“::”通常情况下,调用变量的时候,最先调用的是距离最近的当前作用域的变量。即,作用域越小优先级越高。如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上“::” ,“::”称为作用域运算符。如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。所以,作用域运算符可以用来解决局部变量与全局变量的重名问题,即在局部变量的作用域内,可用::对被屏蔽的同名的全局变量进行访问。例如,在下面的代码中,Console 解析为 TestApp.Console 而不是 System 命名空间中的 Console 类型。using System;namespace Test{ class TestApp { //定义一个名为“System”的新类来引发问题。 public class System { } //定义一个名为“Console”的常量以引发更多问题。 const int Console = 7; const int number = 66; static void Main() => //以下行导致错误。 它访问TestApp.Console, //这是一个常数。 //Console.WriteLine(); //使用 System.Console 仍会导致错误,因为类 TestApp.System 隐藏了 System 命名空间: // 以下行导致错误。 它访问TestApp.System,没有Console.WriteLine方法。 //System.Console.WriteLine(number); //但是,可以使用 global::System.Console 解决此错误,如下所示: // OK global::System.Console.WriteLine(number);}显然,不建议将自己的命名空间的名称创建为 System,并且不可能会遇到发生此情况的代码。 但是,在大型项目中,很有可能会以一种或另一种形式发生命名空间重复。 在这些情况下,全局命名空间限定符可保证指定根命名空间。参考:如何:使用全局命名空间别名(C# 编程指南)