这是什么意思?

时间:2012-08-08 18:06:30

标签: c# .net

正如标题所说的那样,我认为当我一段时间看到它时,我正在查看c#代码,我从未注意过它,但::在c#中意味着什么。我想我看到了像myVar::Process.Start()

这样的东西

3 个答案:

答案 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的示例有助于了解如何使用::同时动态使用它。