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

and*_*rea 0 c#

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

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

编辑澄清,我正在寻找编译器看起来确定不需要指令的地方列表.

例如当前命名空间项目引用

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

Nig*_*888 6

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

我正在寻找编译器查找以确定不需要指令的位置列表.

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

在Visual Studio中

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

在此输入图像描述

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

在此输入图像描述

在代码中

可以使用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));
Run Code Online (Sandbox Code Playgroud)

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

  • 不完全的.如果您使用`System.Windows.Forms`并且在代码中有`System.Windows.Forms.MessageBox.Show("Hello");`您将收到警告 - 即使当前C#代码文件中存在某些内容引用using指令的命名空间中的类型.如果编译没有必要成功,就会收到警告(这几乎就是警告所说的!) (2认同)