【发布时间】:2014-11-04 08:45:44
【问题描述】:
本人来自 C++ 背景,需要一些时间来适应 C#。在 C# 中,使用点运算符 (.) 比 ::-operator(C# 中的命名空间限定符运算符)更频繁地使用来访问命名空间和类范围。
在 C++ 中,使用点运算符 (.) 来访问类实例的成员。另一方面,范围解析运算符 (::) 用于访问没有该类实例的类的成员。对我来说,这是有道理的,既合乎逻辑又一致。
虽然我可以接受 C# 中使用的不同方法,但似乎至少在一个实例中我看到了不一致之处。至少,在我看来是这样的。它与全局关键字有关:
global::System.Console.WriteLine("Hello World");
有人可以向我解释为什么命名空间别名限定符需要与全局关键字而不是点运算符一起使用吗?
【问题讨论】:
-
因为
global是(实际上是匿名的)全局命名空间的命名空间别名,而不是命名空间本身? -
始终将 C# 和 C++ 之间的相似视为意外,而不是设计目标。而且它做同样事情的几率与它在 C++ 中引起的麻烦的数量成反比。这是一个很多,C++ 中的名称解析非常复杂。 Microsoft C++ 编译器今天仍然存在重大错误。
标签: c# namespaces global operator-keyword