如果我在类中包含更多引用和名称空间,这是否重要?

时间:2009-01-05 20:45:30

标签: c#

例如:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Web.Security;
using System.Data;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
using System.Xml.XPath;

using System.Web.Configuration;
using System.Collections.Generic;

我在继承的类中有类似的东西。我可以逐个删除每个命名空间以查看该类是否构建,但这是否重要?

如果我不确定是否需要System.Xml,我应该将其删除吗?

9 个答案:

答案 0 :(得分:11)

一般他们所做的就是添加混乱。

但是,他们可以在某些特定情况下 导致范围内重复名称或重复扩展方法出现问题。例如,如果有Foo.SomeTypeBar.SomeType类,并且您有using Foo;using Bar;,那么对SomeType的引用将需要消除歧义。扩展方法的工作方式类似,不同名称空间中的静态类会产生冲突的扩展方法。

VS2008工具(包括express)包含删除不必要的using语句的选项,这对于整理代码非常有用。

答案 1 :(得分:6)

一般来说,我喜欢删除未使用的using语句,因为它们会使代码混乱。

ReSharper使用未使用的语句灰色。

alt text http://codebetter.com/photos/jeffrey.palermo/images/147903/original.aspx

它还有一个右键菜单,“删除未使用的语句”。

答案 2 :(得分:2)

使用语句仅由编译器用于类型解析,因此如果不需要,可以随意删除它们。额外不会损害性能并删除它们只会略微改善编译时间。

答案 3 :(得分:2)

如果在不同的命名空间中存在具有相似名称的类,则可能会使代码更难以遵循。

答案 4 :(得分:1)

代码工具会告诉您它们是否是多余的。我会离开他们。他们没有任何伤害。 (例如,Resharper)

答案 5 :(得分:1)

未使用的将在编译时删除,因此没有区别,不用担心。

答案 6 :(得分:1)

这可能是使用陈述表现的权威性帖子:Do namespace using directives affect Assembly Loading?

答案 7 :(得分:1)

唯一可能造成的危害是,如果其中两个命名空间恰好有一个完全相同名称的类:但此时,IDE会警告你。

答案 8 :(得分:0)

过去当我手动移除未使用的INCLUDE时,它对内存或速度没有影响。

正如其他人在这里提到的,可能存在冲突问题,但如果它们都是.NET类,我不会过分担心它。