【问题标题】:In C#, is it more performant to use fully qualified names vs the 'using' directive?在 C# 中,使用完全限定名称与“使用”指令相比性能更高吗?
【发布时间】:2013-03-01 19:51:54
【问题描述】:

在 C# 中,当您为命名空间添加 using directive 时,您可以访问该特定命名空间中的所有类型。但是,如果命名空间有很多类型并且我只需要一个特定的类型,我通常只使用完全限定名称,因为我不想让任何我知道我不会使用的不必要的类可用(特别是如果在该命名空间中有很多)出于性能原因。我在想必须对性能产生一些影响(无论多小)才能使它们可用,而不是不可用,但是有多少呢? (如果真的有的话)。如果是这样,那么在所有地方都这样做是不好的做法,因为它不会开始累积到一些值得注意的东西(性能方面)吗?

我确实看到了 other SO post 关于使用 using 指令与完全限定名称的对比,但它与性能无关。

【问题讨论】:

标签: c# .net performance using-directives


【解决方案1】:

这取决于。

使用 using 指令可以帮助您更快地编写代码。 但是,如果你有例如 2 个命名空间,在其中使用 using 指令,这两个命名空间都具有相同名称和相同签名的方法,你会遇到麻烦。

使用完整的限定参考可以使您的代码更易于理解。

【讨论】:

  • 请同时说明我拒绝回答的原因:)
【解决方案2】:

我必须说,不。 编译器将生成相同的 IL 代码,因此您不必担心。

【讨论】:

    【解决方案3】:

    using 指令只是在编译期间消失的语法糖。命名空间是否通过using 包含或在完全限定的类型名称中提及与生成的字节码完全无关。因此,使用其中一种在运行时没有性能优势。

    【讨论】:

      【解决方案4】:

      没有区别。

      可能对编译器性能的影响/益处可以忽略不计(即可能无法衡量)(如运行 msbuild 时),但在运行时 IL 明确知道预期的类型,因为它是在代码中作为类型句柄烘焙。除非使用反射,否则不会“搜索”类型。

      【讨论】:

      • 次要术语,但我会说它“明确”知道预期的类型......
      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2019-07-10
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2017-04-12
      • 2014-08-01
      • 1970-01-01
      相关资源
      最近更新 更多