装配件中有多个系统

时间:2019-01-22 06:17:46

标签: c# .net

当我在引用中查看程序集时,我可以看到多个 系统 名称空间:

enter image description here

那么当我的.cs文件中包含此代码时,我应该调用哪一个?

using System;   // <---------
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

使用 算法如何在这些程序集中找到合适的命名空间?

2 个答案:

答案 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”感兴趣。