什么使得使用指令不必要?

时间:2018-01-23 13:06:47

标签: c#

是什么原因导致c#编译器在using指令上说“使用指令是不必要的”?

可能是当前的命名空间。还有什么?这是在文档中的某个地方定义的吗?我无法找到谷歌搜索的明确答案。

编辑澄清一下,我正在寻找编译器确定不需要指令的地方列表。

E.g。 当前命名空间 项目参考

我不是在寻找一个简单的修复方法(例如删除它)我试图理解为什么它会发生。指着我解释它的任何文档都很棒。

1 个答案:

答案 0 :(得分:6)

"使用指令是不必要的"表示当前C#代码文件中的任何内容都未引用using指令的命名空间中的非命名空间限定类型。要修复此警告,您需要删除using指令或添加一些使用using语句引用的命名空间中的类型的代码。

  

我正在寻找编译器确定不需要指令的地方列表。

由于命名空间是一个特定于程序集的东西,可以由任何程序集扩展,因此没有这样的文档列表,因为它没有实际用途。但是,有几种方法可以找出消除警告信息的类型。

在Visual Studio中

您可以使用对象浏览器来确定命名空间中的类型。

enter image description here

或者,您可以使用Intellisense在代码窗口中获取相同的信息。

enter image description here

在代码

可以使用Reflection获取特定程序集中该命名空间中所有类型的列表。

string nspace = "...";

var q = from t in typeof(SomeClassInTheAssembly).Assembly.GetTypes()
        where t.IsClass && t.Namespace == nspace
        select t;
q.ToList().ForEach(t => Console.WriteLine(t.Name));

请记住命名空间可以跨越多个程序集,此方法可用于显示可添加的可能类型以删除警告。