Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 命名空间名称和类型名称冲突_C# - Fatal编程技术网

C# 命名空间名称和类型名称冲突

C# 命名空间名称和类型名称冲突,c#,C#,是否可以在不更改名称空间或类型名的情况下使以下代码在C#中有效。我想知道是否有一个技巧或关键字围绕这个问题 namespace NS { public class Foo { } } namespace NS.Foo { public class Bar { } } 我得到的错误是“名称空间'NS'已经包含'Foo'的定义”.否-无法从NS.Foo名称空间和NS.Foo类中消除歧义。否-无法从NS.Foo名称空间和NS.Foo类中消除歧义。否-想象一下在Foo中有一个子类叫做

是否可以在不更改名称空间或类型名的情况下使以下代码在C#中有效。我想知道是否有一个技巧或关键字围绕这个问题

namespace NS
{
    public class Foo { }
}

namespace NS.Foo
{
    public class Bar { }
}

我得到的错误是“名称空间'NS'已经包含'Foo'的定义”.

否-无法从
NS.Foo
名称空间和
NS.Foo
类中消除歧义。

否-无法从
NS.Foo
名称空间和
NS.Foo
类中消除歧义。

否-想象一下在
Foo
中有一个子类叫做
Bar

namespace NS
{
    public class Foo { public class Bar {} }
}

namespace NS.Foo
{
    public class Bar { }
}

如果有人这样做,你怎么能分辨出区别:
new NS.Foo.Bar()

否-想象一下在
Foo
中有一个名为
Bar
的子类:

namespace NS
{
    public class Foo { public class Bar {} }
}

namespace NS.Foo
{
    public class Bar { }
}

如果有人这样做,你怎么能分辨出区别:
new NS.Foo.Bar()

本质上,没有。即使您能够以某种方式解决直接的歧义,这个问题也会一直存在:如果您声明一个名为
Bar
Foo
属性,会发生什么


重命名一个
Foo
s.

本质上,没有。即使您能够以某种方式解决直接的歧义,这个问题也会一直存在:如果您声明一个名为
Bar
Foo
属性,会发生什么


重命名一个
Foo
s.

不要这样做:WWW,不,你不想这样做。它会很快让你和其他使用该代码库的人感到恼火。@Jason:你的链接指的是一个与其封闭名称空间同名的类(即class
NS.NS
NS.Foo.Foo
),这与问题中的场景不同-这是一个命名空间和一个类,位于层次结构的同一级别,具有相同的名称。@Jason:我以前看到过MSDN页面,但它实际上并没有解决这个特定问题。他在文章的第四部分基本上是说“避免这样做”,不要这样做:不,你不想这样做。它会很快让你和其他使用该代码库的人感到恼火。@Jason:你的链接指的是一个与其封闭名称空间同名的类(即class
NS.NS
NS.Foo.Foo
),这与问题中的场景不同-这是一个命名空间和一个类,位于层次结构的同一级别,具有相同的名称。@Jason:我以前看到过MSDN页面,但它实际上并没有解决这个特定问题。他在文章的第4部分基本上说了“避免这种情况”。