是什么原因导致c#编译器在using指令上说“使用指令是不必要的”?
可能是当前的命名空间。还有什么?这是在文档中的某个地方定义的吗?我无法找到谷歌搜索的明确答案。
编辑澄清一下,我正在寻找编译器确定不需要指令的地方列表。
E.g。 当前命名空间 项目参考
我不是在寻找一个简单的修复方法(例如删除它)我试图理解为什么它会发生。指着我解释它的任何文档都很棒。
答案 0 :(得分:6)
"使用指令是不必要的"表示当前C#代码文件中的任何内容都未引用using指令的命名空间中的非命名空间限定类型。要修复此警告,您需要删除using指令或添加一些使用using语句引用的命名空间中的类型的代码。
我正在寻找编译器确定不需要指令的地方列表。
由于命名空间是一个特定于程序集的东西,可以由任何程序集扩展,因此没有这样的文档列表,因为它没有实际用途。但是,有几种方法可以找出消除警告信息的类型。
您可以使用对象浏览器来确定命名空间中的类型。
或者,您可以使用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));
请记住命名空间可以跨越多个程序集,此方法可用于显示可添加的可能类型以删除警告。