“使用”有哪些优势?

3

当你引用某些方法时,可以使用 using 或者显式地输入整个命名空间。使用其中一种方法是否有速度优势,还是仅仅为了更容易地输入整个命名空间?谢谢。

3个回答

6

在运行时没有任何区别。

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

在写using指令时,将其放在namespace内部或外部存在一些微妙的方面(在编译时查看例如这个问题),但这也只是一个编译时问题。


2
吹毛求疵:它是使用“指令”,而不是使用“语句”。 - dtb
using 语句用于处理实现 IDisposable 接口的对象,以便它可以被垃圾回收。 - Darbio

3

这纯粹是一个语法问题,并且编译成相同的东西。看一下每个产生的IL。


0

我们是否都忘记了扩展方法?据我所知,它们不能在没有using命名空间指令的情况下被引入作用域。


但这并不重要,因为扩展方法在元数据/IL级别上不存在(除非您计算ExtensionAttribute,但那是针对编译器而不是CLR的)。 - siride
问题是“使用‘using’是否提供任何优势?”答案是肯定的,您可以在C# 3.0及以上版本中获得扩展方法-除了在代码文件中缩短标识符。但是,没有运行时优势或劣势。 - James Dunne
真的,但问题文本中特别询问它是否对代码有任何优势,而不仅仅是一种语法糖。由于扩展方法也只是一种语法糖(虽然是 LINQ 需要的一些“药片”),因此它们在这里并不相关;someEnumerable.Count()System.Linq.Enumerable.Count(someEnumerable) 没有任何区别。 - Jon Hanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接