博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
命名空间与程序集的区别【转】
阅读量:5048 次
发布时间:2019-06-12

本文共 933 字,大约阅读时间需要 3 分钟。

本文内容转自:

1.命名控件与程序集的区别。

      命名空间用于对类型进行逻辑分组。程序集则是程序的物理分组对应于一个dll或exe文件

2.为什么要使用两种方式分组?把逻辑分组作为物理分组不是更简单吗?

     逻辑分组主要针对开发人员,而物理分组主要针对安装和部署。

     除此之外,以下情况也需要使用两种方式分组,否则会很不方便。

     1)团队开发。一个公司分别由不同的部门共同开发同一个命名空间的不同组件。那么不同的部门可以把他们开发的东西编译成各自的dll文件。使用时把几个dll一起引用即可。

     2)一个命名空间里包含的类型太多,而有大部分是用不上的。如果把一个命名空间编译成一个dll,则会降低运行效率。

     3)有时需要对一个命名空间内的类型区别对待。如果打算开发一个系列软件,该软件分普通版,专业版,高级版。越高的版本具有越高的权限(当中包含了一些高级的类),这时可以把高级的功能放到一个单独的dll来控制。

3.类型可以没有命名空间吗?

可以

4.Object类的名字到底是Object还是System.Object?

    可以说都是也可以说都不是。

    1)对于IL来说,确定一个类型是需要程序集+类型全名称的。比方调用Object的ToString()方法,其实是[MSCorLib.dll]System.Object::ToString()。因此CLR不知道命名空间的事情,它只知道调用MSCorLib.dll中的System.Object类。

    2)  对于C#来说,编译后会自动把命名空间加上点号让类型名变成全名称。但是,类名是不能出现点(.)符号的,以下代码在逻辑上是成立的,但是C#语法不允许。

class System.Object
{
}

    相当于

namespace System
{
    class Object
    {
    }
}

  但是C#中命名空间是允许出现点符号的。

namespace System.IO
{
    class Object
    {
    }
}

   完全等同于

namespace System
{
    namespace IO
    {
        class Object
        {
        }
    }
}

转载于:https://www.cnblogs.com/llljpf/p/6772031.html

你可能感兴趣的文章
java安全沙箱(二)之.class文件检验器
查看>>
http协议篇
查看>>
AngularJS的使用方法
查看>>
八、python操作excel及网络编程和异常处理
查看>>
Oracle学习之简单查询
查看>>
log4j配置
查看>>
linux 配置SAN存储-IPSAN
查看>>
双链表
查看>>
【bzoj4551】[Tjoi2016&Heoi2016]树 并查集
查看>>
【uoj#139】[UER #4]被删除的黑白树 贪心
查看>>
oracle插入数据
查看>>
【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP
查看>>
java学习笔记之String类
查看>>
Python Day12
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
LOJ2362. 「NOIP2016」蚯蚓【单调队列】
查看>>