当我在引用中查看程序集时,我可以看到多个 系统 名称空间:
那么当我的.cs文件中包含此代码时,我应该调用哪一个?
using System; // <---------
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
此 使用 算法如何在这些程序集中找到合适的命名空间?
答案 0 :(得分:3)
命名空间有效地合并了所有引用的程序集。当您拥有using System;
时,就是从整个名称空间中导入类型,这意味着所有引用的程序集中该名称空间中的所有类型均可用。
命名空间甚至不存在,直到其中存在类型为止。
如果需要,可以在System
命名空间中定义自己的类型,这样只要您拥有using System;
就可以使用它们。这并不是说您应该,只是说有可能。
答案 1 :(得分:2)
命名空间的存在是为了逻辑上打包相关类型(类,枚举等),并减少名称歧义的风险。 您可以为项目引用几个具有相同名称空间的程序集。
想象一下,您引用了两个程序集,它们都包含“ namepsace2”:
assembly1
namespace1
namespace2
class1
class2
assembly2
namespace2
class2
class3
namespace3
namepsace4
使用时
using namepsace2;
您可以访问两个程序集中“ namespace2”中的所有类型,而无需完全统一其名称:
// you can use
class1 c1 = new class1();
// instead of
namepsace2.class1 c1 = new namepsace2.class1();
// And also class3 can be used similarly
但是“ class2”导致问题。您必须使用其完全限定名称来告诉编译器您对哪个“ class2”感兴趣。