例如,我很少需要:
using System.Text;
但默认情况下它总是在那里。如果您的代码包含不必要的using 指令,我假设应用程序将使用更多内存。但是还有什么我应该注意的吗?
此外,如果仅在一个文件与大多数/所有文件中使用相同的 using 指令,它是否有任何区别?
编辑:请注意,此问题与称为using 语句的不相关概念无关,旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源。请参阅C# 中“使用”的使用。
例如,我很少需要:
using System.Text;
但默认情况下它总是在那里。如果您的代码包含不必要的using 指令,我假设应用程序将使用更多内存。但是还有什么我应该注意的吗?
此外,如果仅在一个文件与大多数/所有文件中使用相同的 using 指令,它是否有任何区别?
编辑:请注意,此问题与称为using 语句的不相关概念无关,旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源。请参阅C# 中“使用”的使用。
除了编码偏好之外,删除未使用的使用/命名空间的原因很少:
删除未使用的命名空间不会做什么:
无论是否删除了未使用的使用,生成的程序集都是相同的。
当你的程序运行时,它不会改变任何东西。所需的一切都按需加载。因此,即使您有该 using 语句,除非您实际使用该命名空间/程序集中的类型,否则不会加载与 using 语句相关的程序集。
主要是为了清理个人喜好。
代码清洁度很重要。
当人们看到多余的使用时,人们开始感觉到代码可能是无人维护的,并且在 browfield 路径上。本质上,当我看到一些未使用的 using 语句时,我的脑后会升起一面小黄旗,告诉我“谨慎行事”。阅读生产代码永远不会给你那种感觉。
所以清理你的使用。不要马虎。激发信心。让你的代码漂亮。给另一个开发者那种温暖模糊的感觉。
没有对应于using
. 因此,这些using
语句不会增加您的应用程序内存,因为没有为其生成代码或数据。
Using
在编译时仅用于将短类型名称解析为完全限定类型名称。因此,唯一不必要的负面影响using
是稍微减慢编译时间并在编译期间占用更多内存。不过我不会担心这个。
using
因此,拥有不需要的语句的唯一真正负面影响是智能感知,因为在您键入时完成的潜在匹配列表会增加。
如果您将类称为命名空间中的(未使用的)类,则可能会发生名称冲突。对于 System.Text,如果您定义一个名为“Encoder”的类,就会遇到问题。
无论如何,这通常是一个小问题,并被编译器检测到。
您的应用程序不会使用更多内存。编译器可以找到您在代码文件中使用的类。除了不干净之外,它真的没有伤害。
主要是个人喜好。我自己清理它们(ReSharper 很好地告诉我什么时候不需要使用语句)。
有人可以说它可能会减少编译时间,但随着当今计算机和编译器的速度,它不会产生任何明显的影响。
留下额外的using
指令很好。删除它们有一点价值,但没有多大价值。例如,它使我的 IntelliSense 完成列表更短,因此更易于导航。
编译的程序集不受无关using
指令的影响。
有时我把它们放在一个 里面#region
,然后让它折叠起来;这使得查看文件更清晰。IMO,这是#region
.
如果您想保持代码干净,using
则应从文件中删除未使用的语句。当您在一个需要了解您的代码的协作团队中工作时,好处显得非常明显,认为您的所有代码都必须维护,更少的代码=更少的工作,好处是长期的。
它们只是用作捷径。例如,如果您没有 using System,则每次都必须编写: System.Int32;在上面。
删除未使用的只会让你的代码看起来更干净。
using 语句只是让您无法限定您使用的类型。我个人喜欢清理它们。实际上,这取决于如何使用 loc 指标
只有您实际使用的命名空间允许您将代码记录在案。
您可以通过任何搜索工具轻松找到代码的哪些部分相互调用。
如果您有未使用的命名空间,则在运行搜索时这没有任何意义。
我现在正在清理命名空间,因为我经常被问到应用程序的哪些部分以一种或另一种方式访问相同的数据。
我知道哪些部分正在以各种方式访问数据,因为数据访问被命名空间分隔,例如直接通过数据库和间接通过 Web 服务。
我想不出一种更简单的方法来一次完成这一切。
如果您只是希望您的代码成为一个黑匣子(对开发人员而言),那么没关系。但是,如果您需要随着时间的推移对其进行维护,那么它就像所有其他代码一样是有价值的文档。
'using' 语句不会影响性能,因为它只是限定标识符名称的助手。因此,不必输入System.IO.Path.Combine(...) ,如果您使用 System.IO,您可以简单地输入Path.Combine(...)。
不要忘记编译器在构建项目时会做很多工作来优化所有内容。在很多地方使用它,或者 1 不应该在编译后做不同的事情。