例如,我很少需要:

using System.Text;

但是它总是有的默认。我假设应用程序将使用更多的存储器,如果你的代码包含不必要的 使用的指令.但是还有什么我应该知道的吗?

此外,它不会使任何差异,如果任何同使用指令,用于在只有一个文件与大部分/所有的文件?


编辑:注意这个问题不是有关无关的概念被称为 使用的声明, ,旨在帮助一个管理资源,通过确保当一个对象超出范围,它的 IDisposable.处置 方法。看看 使用的"使用"在C#.

有帮助吗?

解决方案

程序运行时不会改变任何内容。所需的一切都按需加载。因此,即使您具有该using语句,除非您实际使用该命名空间/程序集中的类型,否则将不会加载与该语句相关的程序集。

主要是为了清理个人偏好。

其他提示

还有 几个原因去除未使用的采用(s)/名称空间,除了编码的偏好:

  • 除去未使用的使用条款中一个项目,可以使编制速度更快,因为编译器具有较少的名字空间,以查的类型来解决。(这尤其是为C#因为3.0的扩展方法,在编译器必须搜查的所有名字空间的用于扩展的方法可能更好地匹配,一般类型推理和lambda表达的涉及通用类型)
  • 可能潜在地有助于避免名冲突在未来建立时,新类型的被添加到未使用的名称空间具有相同的名称,如一些种类型中使用的名称空间。
  • 将数量的减少项目的编辑自动完成名单编码时,posibly导致更快的打字(C#3.0这也可以减少清单的扩展方法所示)

什么去除未使用的名称空间 会不会 这样做:

  • 改变在任何方式输出的编译器。
  • 改变在任何方式的执行编译程序(加载速度更快或更好的性能)。

得到大会的相同或没有未使用的采用(s)删除。

代码清洁度 非常重要。

当人们看到多余的使用时,人们开始感觉到代码可能没有维护并且在眉地路径上。从本质上讲,当我看到一些未使用的使用语句时,我的脑后会出现一个小黄旗,告诉我“谨慎行事”。阅读生产代码永远不应该给你那种感觉。

清理你的用途。不要马虎。激发信心。让你的代码漂亮。给另一个开发者带来温暖模糊的感觉。

没有IL构造与使用对应。因此,使用语句的不会增加应用程序内存,因为没有为其生成的代码或数据。

在编译时使用仅用于将短类型名称解析为完全限定类型名称。因此,使用不必要的所带来的唯一负面影响是在编译过程中稍微减慢编译时间并占用更多内存。我不会担心这个。

因此,使用使用语句不需要的唯一真正的负面影响是智能感知,因为当你输入的时候完成的潜在匹配列表会增加。

如果您像调用名称空间中的(未使用的)类一样调用类,则可能会发生名称冲突。对于System.Text,如果定义名为“Encoder”的类,则会出现问题。

无论如何,这通常是一个小问题,并由编译器检测到。

您的应用程序不会使用更多内存。它用于编译器查找您在代码文件中使用的类。除了不干净之外,它真的没什么坏处。

主要是个人偏好。我自己清理它们(Resharper很好地告诉我什么时候不需要使用语句)。

可以说它可能会缩短编译时间,但是如今计算机和编译器的速度不会产生任何可察觉的影响。

使用指令留下额外的是可以的。删除它们有一点价值,但并不多。例如,它使我的IntelliSense完成列表更短,因此更容易导航。

编译的程序集不受使用指令的无关的影响。

有时我把它们放在 #region 中,然后让它崩溃;这使查看文件更清洁。 IMO,这是 #region 的少数好用之一。

如果你想保持你的代码干净,不使用使用语句应该从文件中删除。当您在一个需要理解您的代码的协作团队中工作,认为您的所有代码都必须得到维护,代码减少,工作量减少,长期利益时,这些好处就会非常明显。

它们仅用作快捷方式。例如,你必须写: System.Int32每次如果你没有使用系统;在顶部。

删除未使用的代码只会让您的代码看起来更清晰。

using语句只是让您无法限定您使用的类型。我个人喜欢清理它们。实际上,这取决于如何使用loc指标

只具有名字空间,实际使用可以让你保持你的代码记录在案。

你可以很容易地找到什么份代码拨打的另一个通过任何搜索工具。

如果有未使用的名称空间这意味着什么,当运行搜索。

我正在清理名称空间是现在,因为我不断问哪些部分应用程序访问的同样的数据一种或另一种方式。

我知道哪些部分是访问数据的各种方式由于数据访问被分隔的命名空间,例如直接通过一个数据库,并在直接通过网络服务。

我想不出一个更简单的方法来做到这一切。

如果你只是想要你的代码是一个黑盒(开发商),然后是这并不重要。但如果你需要保持它随着时间的推移,它是有价值的文件,像其他所有代码。

'using'语句不会影响性能,因为它只是限定标识符名称的助手。因此,您无需键入 System.IO.Path.Combine(...),只需输入 Path.Combine(...)即可使用System.IO

不要忘记编译器在构建项目时需要做很多工作来优化所有内容。使用它在很多地方使用,或者1编译后不应该做不同的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top