我们知道有一个命名空间叫 System,它是顶级的,如果我们自己写一个类也叫 System,使用时 Visual Studio 就很可能晕了,两个在当前作用范围都有效,它就不知道我们使用的 System 到底是指命名空间还是我们的类。
所以 C# 2.0 就新增了 global 关键字。
global::System 代表的是系统的命名空间,不是我们自己写的那个类。
当然我们一般命名时不会造成这种冲突,但是从其他语言转换过来时,可能会造成冲突,因为其他语言可能没觉得 System 名称有什么特殊。