【问题标题】:does 'using' provide any advantages?“使用”有什么好处吗?
【发布时间】:2011-04-24 02:13:47
【问题描述】:

当您引用某些方法时,您可以使用using 或显式键入整个命名空间。使用一种方法相对于另一种方法是否有任何速度优势,或者仅仅是为了使输入整个命名空间更容易?谢谢

【问题讨论】:

    标签: c# namespaces using


    【解决方案1】:

    在运行时没有区别。

    在 .NET 元数据中,类型始终使用包含命名空间的全名来表示,因此 C# 中已知的 using 指令将在编译程序时消失。

    namespace 内部或外部编写using 时有一些微妙的方面(在编译时)(参见例如this question),但这也只是一个编译时问题。

    【讨论】:

    • Nitpick:这是 using directive,而不是 using statement
    • using 语句用于处理实现 IDisposable 的对象,以便对其进行垃圾回收。
    【解决方案2】:

    这纯粹是句法问题,编译成同样的东西。看看每个人产生的 IL。

    【讨论】:

      【解决方案3】:

      我们都忘记了扩展方法吗?据我所知,如果没有 using 命名空间指令,它们就无法被拉入作用域。

      【讨论】:

      • 但这并不重要,因为元数据/IL 级别中不存在扩展方法(除非您计算 ExtensionAttribute,但那是针对编译器,而不是 CLR)。
      • 问题是“‘使用’有什么好处吗?”答案是肯定的,除了代码文件中的缩短标识符之外,您还可以在 C# 3.0 及更高版本中获得扩展方法。但是不,运行时没有优势也没有劣势。
      • 没错,但在问题的文本中,它具体询问它是否对代码有任何优势,而不仅仅是语法糖。由于扩展方法也只是语法糖(尽管 LINQ 需要使某些药物失效)它们在这里不相关; someEnumerable.Count()System.Linq.Enumerable.Count(someEnumerable) 等没有什么不同。
      猜你喜欢
      • 2014-10-26
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2012-02-11
      • 2012-07-17
      • 2019-01-18
      相关资源
      最近更新 更多