Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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命名空间问题_C#_Visual Studio 2010_Namespaces - Fatal编程技术网

C# 奇怪的C命名空间问题

C# 奇怪的C命名空间问题,c#,visual-studio-2010,namespaces,C#,Visual Studio 2010,Namespaces,我有一个项目,其中包含几个名称空间和许多类-> Some.Namepsace. (namespace) ExistingClass (class) ExistingClass2 (class) Constants (class) .Enum (enum) 在这个项目中,我创建了一个类,但名称空间不正确,如下所示 namespace Some.Namespac

我有一个项目,其中包含几个名称空间和许多类->

Some.Namepsace. (namespace)
               ExistingClass (class)
               ExistingClass2 (class)
               Constants (class)
                        .Enum (enum)
在这个项目中,我创建了一个类,但名称空间不正确,如下所示

namespace Some.Namespace.Some.Namespace
{
    public class NewClass {}
}
现在,Some.Namespace.ExistingClass无法解析对Some.Namespace.Constants.Enum的引用-它似乎正在查找Some.Namespace.Some.Namespace.Constants.Enum

知道为什么吗?NewClass不引用任何东西,也不被任何东西引用,所以我不知道它的命名空间会如何影响任何其他组件。我修复了NewClass上的命名空间问题,这就解决了它。

Some.namespace.Some.namespace中的类将尝试解析Some.namespace.Constants.Enum as:Some.Namespace.Some.Namespace.Constants.Enum,而不是Some.Namespace.Constants.Enum

如果您尝试将枚举引用为:global::Some.Namespace.Constants.Enum,则该操作将有效。

Some.Namespace.Some.Namespace中的类将尝试解析Some.Namespace.Constants.Enum as:Some.Namespace.Some.Namespace.Constants.Enum,而不是Some.Namespace.Constants.Enum


如果您尝试将枚举引用为:global::Some.Namespace.Constants.Enum.

这一定与visual studio/csc中的C尝试解析引用的方式有关。看起来是这样的:

相对于调用对象的命名空间查看 如果找不到这样的名称空间,请尝试查找引用,就像它是绝对的一样 在我的示例中,在添加Some.Namespace.Some.Namespace.NewClass之前,当VS尝试解析从Some.Namespace.ExistingClass到Some.Namespace.Constants.Enum的引用时,它首先尝试从ExistingClasse的Some.Namespace开始进行相对命名空间查找,但未找到此类命名空间。然后它尝试进行绝对查找并找到了它


在我添加了Some.Namespace.Some.Namespace.NewClass之后,它找到了名称空间,注意到对象不在那里,并决定停止搜索。

这一定与visual studio/csc中的C尝试解析引用的方式有关。看起来是这样的:

相对于调用对象的命名空间查看 如果找不到这样的名称空间,请尝试查找引用,就像它是绝对的一样 在我的示例中,在添加Some.Namespace.Some.Namespace.NewClass之前,当VS尝试解析从Some.Namespace.ExistingClass到Some.Namespace.Constants.Enum的引用时,它首先尝试从ExistingClasse的Some.Namespace开始进行相对命名空间查找,但未找到此类命名空间。然后它尝试进行绝对查找并找到了它


在我添加了Some.Namespace.Some.Namespace.NewClass之后,它找到了名称空间,注意到对象不在那里,并决定停止搜索。

你是说它现在可以工作了,你只是想知道为什么会发生这种情况,还是它仍然不能与固定名称空间一起工作?现在可以了,我只是想知道为什么我在理解你关于所有类型和名称空间之间关系的描述文章时遇到了很大的困难。你能不能给我们解释一下这个问题?代码是什么样子的?Eric怎么样?当你发布问题时总是很清楚,你是说它现在可以工作了,你只是想知道它为什么会发生,还是在固定名称空间中仍然不能工作,我只是想知道为什么我在理解你关于所有类型和名称空间之间关系的描述文章时遇到了很大的困难。你能不能给我们解释一下这个问题?代码是什么样子的?Eric怎么样?当你发布问题的时候,它总是很清楚的,很清楚的回答,这并没有回答我原本困惑的问题。我澄清了我的问题。回答得很清楚,但这并没有回答我原本困惑的问题。我澄清了我的问题。