4

正如标题所说,我想我前一阵子看到这个时正在看c#代码,我从来没有注意到它,但是::c#中的意思是什么。我想我看到了类似的东西myVar::Process.Start()

4

3 回答 3

11

它是命名空间别名限定符- 如果您使用命名空间别名:

using config = System.Configuration;

...

var value = config::ConfigurationManager.AppSettings["Somthing"];

当您在同一范围内具有相同名称的类型时,它有助于消除歧义。

例如 - 如果您有多个Leg类(一个用于家具,一个用于旅程),并且两者都在导入的命名空间中,结果当您Leg在代码中使用时,编译器无法判断您指的是哪一个,然后,如果您有命名空间的命名空间别名,则可以使用<alias>::Leg来指代您所指的确切类型。

全局命名空间有一个默认别名 global

于 2012-08-08T18:10:16.733 回答
9

它在文档中:

命名空间别名限定符 (::) 用于查找标识符。它始终位于两个标识符之间,如下例所示:

global::System.Console.WriteLine("Hello World");

如何:使用命名空间别名限定符(C# 编程指南)可能也很有用。

于 2012-08-08T18:08:26.137 回答
1

如果您在较低的命名空间中有一个与另一个名称相同的方法或属性,您将使用:: 。例如:

namespace Taylor 
{ 
 public Console {get; set;}
}

所以假设你想使用Console.WriteLine();

不使用global::System.Console.WriteLine(); 它,默认情况下将使用Taylor.Console 它,因为它指向this

它基本上使它区分命名空间,您指定的;最常见的是:(global最低级别)。

这个例子有点多余,因为 System.Console 无论如何都会指向它。查看 Oded 的示例可以了解如何在::动态使用的同时使用它。

于 2012-08-08T18:37:48.257 回答