请参阅下面的示例程序。我有两个名称空间包含相同的struct
。为了避免在Main()
中使用时发生冲突,我给出了名称空间别名。从struct
调用Main()
时,我可以直接通过命名空间别名调用,例如test.MyStruct
。我还有另一个使用::
运算符的选项,例如test::MyStruct
。
为什么需要::
运算符,我应该在哪里使用它而不是别名?
using System;
using test=counter;
using duplicatecounter;
namespace counter
{
struct MyStruct
{
}
}
namespace duplicatecounter
{
struct MyStruct
{
}
}
class Program
{
public static void Main()
{
test.MyStruct a = new test.MyStruct();
test::MyStruct a1 = new test::MyStruct();
}
}
答案 0 :(得分:5)
当有人在不考虑使用代码的情况下编写代码时,主要需要它。即名称空间中的重复类,它们应该一起使用或隐藏名称空间。
MSDN示例在Use the Global Namespace Alias中显示了一个案例:
class TestApp
{
// Define a new class called 'System' to cause problems.
public class System { }
// Define a constant called 'Console' to cause more problems.
const int Console = 7;
const int number = 66;
static void Main()
{
// The following line causes an error. It accesses TestApp.Console,
// which is a constant.
//Console.WriteLine(number);
global::System.Console.WriteLine(number); // ok
}
}
答案 1 :(得分:3)
::
运算符执行相同操作namespace.
,但::
运算符用于查找标识符。它始终位于两个标识符之间
示例:
global::System.Console.WriteLine("Hello World");
这里解释的一个好例子:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx