添加using语句或编写namespace.classname方法有什么区别

时间:2016-03-12 07:26:11

标签: c# namespaces

添加using命名空间有什么区别;语句和namespace.classname方法。 假设我想使用XElement类,我可以使用System.Xml.Linq.XElement添加;声明到文件顶部,然后使用XElement类,或者每当我需要使用XElement类时,我都可以使用System.Xml.Linq.XElement。 哪一个更好/更有效? 哪一个更像程序员的方法?

3 个答案:

答案 0 :(得分:2)

通常在类文件顶部声明的using语句是一种初始化哪些名称空间以尝试对该类或模块中使用的类进行属性化的方法。从编译器的角度来看,每个类在编译时都被解析为完整的命名空间(这里简化了一点,我知道)所以没有性能优势。

从可读性的角度来看,看到诸如

之类的代码更好
FileInfo f = new FileInfo(Path.Combine("Dir","FileName"));

而不是

System.IO.FileInfo f = new System.IO.FileInfo(System.IO.Path.Combine("Dir","FileName"));

前一个选项更容易输入和阅读。但两者都不是“更好”或“更有效”

答案 1 :(得分:2)

使用语句或编写 namespace.classname 之间存在无实质差异。从单一方面看可读性更好,重复使用更好。让我们说我将在我的代码中使用相同的类4次,为什么每次都重新插入 namepsace.classname 会有麻烦?只需一次性使用using语句。

答案 2 :(得分:1)

命名空间通常用于

  • 定义范围
  • 区分具有相同名称的类(但在不同的名称空间中)。

在生成的字节码中,您的代码中是否有“使用”或“完全限定名称”并不重要。编译器总是使用全名。没有性能优势。

但必须注意的是,“using”指令有助于消除特定命名空间的常用类的代码冗余。

例如删除

  

使用System;

从您的代码

开始为所有类输入完全限定名称。

但是,当两个名称空间具有相同的类(您要使用其中一个)时,您需要键入完全限定名称以消除代码中关于您实际要使用哪个类的歧义。