正如标题所说的那样,我认为当我一段时间看到它时,我正在查看c#代码,我从未注意过它,但::
在c#中意味着什么。我想我看到了像myVar::Process.Start()
答案 0 :(得分:10)
namespace alias qualifier - 如果您使用命名空间别名:
using config = System.Configuration;
...
var value = config::ConfigurationManager.AppSettings["Somthing"];
当在同一范围内具有相同名称的类型时,它有助于消除歧义。
例如 - 如果您有多个Leg
类(一个用于家具,一个用于旅程的一部分),并且两者都在导入的命名空间中,结果是当您使用Leg
时你的代码编译器无法分辨你的意思,那么如果命名空间中有命名空间别名,你可以使用<alias>::Leg
来指代你所指的确切类型。
全局命名空间有一个默认的alias global
。
答案 1 :(得分:9)
它位于docs:
命名空间别名限定符(::)用于查找标识符。它始终位于两个标识符之间,如下例所示:
global::System.Console.WriteLine("Hello World");
How to: Use the Namespace Alias Qualifier(C# Programming Guide)可能也很有用。
答案 2 :(得分:1)
如果在较低的命名空间中有一个名称与另一个相同的方法或属性,则可以使用 :: 。例如:
namespace Taylor
{
public Console {get; set;}
}
因此,假设你想使用 Console.WriteLine();
不使用global::System.Console.WriteLine();
默认情况下,它仅使用Taylor.Console
,因为它指向this
它基本上使它区分命名空间,指定一个;最常见的是:global
(最低级别)。
这个例子有点多余,因为System.Console无论如何都会指向它。查看Oded的示例有助于了解如何使用::
同时动态使用它。