如何防止命名空间污染?

时间:2012-08-16 23:53:02

标签: c#

我有一个定义类

的程序
namespace @default
{
    public class Test
    {
    }
}

然后,我再次使用名为Test的类来替换没有名称空间的另一个库。如何隐藏其他库Test类,以便我的程序看不到@default.Test作为其他库Test类?

2 个答案:

答案 0 :(得分:4)

默认情况下,在default命名空间内,default.Test类是您在说Test时使用的类。

default命名空间之外,您需要在using语句中执行以下操作:

using ExternalTest = global::Test;
using Test = default.Test;

第一行并非绝对必要,因为您可以在任何地方使用global::Test

对于那些之前没有遇到过全球的人:global (C# Reference)

答案 1 :(得分:1)

使用global::作为标识符名称的前缀,以指示应从全局(未命名)命名空间开始找到它。例如:

class Test { }

namespace Default {
    public class Test {
        global::Test theOtherOne;
    }
}

您经常会在自动生成的代码中看到它用于避免意外名称冲突。与Resources.Designer.cs一样