c#中的命名空间

mrd*_*mrd 4 .net c#

在以下示例中,哪一个是最佳用途.如您所见,我只使用列表集合而没有命名空间中的任何其他内容.是这样的,当执行Example1时,命名空间system.collections.generic下的所有类都被加载到内存中或者是什么?这两个例子的表现如何?

Example1:

using System.Collections.Generic;
public interface ICustomer
{
    List<Customer> GetAll();
}


Example2: 

public interface ICustomer
{
    System.Collections.Generic.List<Customer> GetAll();
}
Run Code Online (Sandbox Code Playgroud)

And*_*oni 5

第一种情况让你在课堂开头宣布你打算在课堂上使用什么(你的偶合是什么).除了其他用途之外,IDE和编译器还使用声明来:

  • 启用intellisense(自动完成)
  • 激活扩展方法(例如Linq扩展方法)

因此,如果不声明它们,您将失去此功能.这种用途是优选的.它也提高了代码的可读性.即使Visual Studio没有强烈建议您保持使用清洁(显示警告等等,例如,在基于java的环境中),最好从上下文菜单中执行"删除未使用的导入".你的班级文件.

第二种情况允许您使用通过完全限定名称显式引用它的类型.此案例通常用于名称冲突情况.

最后,二进制编译的代码将是相同的,因为编译器将对其进行优化,但如果使用第一种方法,编译过程本身可能会更有效.