C#学习笔记(十三)命名空间和程序集

一.命名空间
1.命名空间名:命名空间名可以视为一个字符串,它加在类名或者类型名得前面并且通过点进行分隔
2.完全限定名:包括命名空间名、分割点,以及类名得完整字符串叫做类得完全限定名。
3.命名空间:命名空间是共享命名空间名的一组类和类型。
4.在命名空间内,每个类型名必须有别于所以其他类型。
5.命名空间内的类型称为命名空间的成员。
6.一个源文件可以包含任意数目的命名空间声明,可以顺序也可以嵌套。
7.不在同一源文件中,但是具有相同的命名空间的类型声明,源文件可以被编译成单一的程序集,也可以编译成分离的程序集。
8.命名空间可以被嵌套,从而产生嵌套的命名空间;可以通过原文嵌套和分离的声明方法声明一个嵌套的命名空间。
原文嵌套:可以把命名空间的声明放在一个封装的命名空间声明体内部,从而创建一个嵌套的命名空间。
eg:

namespace myNamespace
{
    class class1 { }
    namespace myNamespace.Other
    {
        class class2 { }
        class class3 { }
    }
}

分离的声明:可以为嵌套命名空间创建分离的声明,但必须在声明中使用它的完全限定名称。
eg:

namespace myNamespace
{
    class class1 { }   
}
namespace myNamespace.Other
{
    class Otherclass { }
}
其编译生成的

程序集为
myNamespace.class1
myNamespace.Other.Otherclass
虽然嵌套命名空间位于父命名空间内部,但是其成员并不属于包裹的父命名空间,命名空间之间是相互独立的。建议命名空间名
1.使用公司名开始命名空间名称
2.公司名称之后跟技术名称
3.不要把命名空间命名为与类或类型相同的名称
eg:Microsoft.CSharp/System.Data二.using指令
using指令词必须放在源文件的顶端,在任何类型申明之前;using指令词应用于当前源文件的所有命名空间。
1.using命名空间指令
using命名空间指令可以通知编译器当前源文件将会使用指定命名空间的类型,这样就避免使用完全限定名。
2.using别名指令
using别名指令允许起一个别名给命名空间或者命名空间的一个类型。
eg:
using sys=System;
using gen=System.Collections.Generic;
三.程序集解构
程序集主要由清单、类型元数据、CIL代码和资源组成。
1.清单主要包含了程序集标识符、组成程序集的文件列表、本程序引用的其他程序集列表和关于哪个类型被包含在哪个程序集的地图。
2.类型元数据关于程序集中所有类型的元数据。
3.CIL包含了程序集的所有中间代码。
4.资源部分是可选的,但可以包含图形或语言资源。
5.由多个模块的程序集中,一个文件是主模块,其他的为次要模块。
主模块包含程序集的清单和到次要模块的引用。
次要模块的文件名以扩展名.netmodule结尾。
多文件程序集被视为一个单一单元,它们一起部署并一起定版。
四.程序集标识符
程序集标识符唯一标识了一个程序集,其由简单名、版本名、文化信息、公钥组成。
1.简单名:这只是不带文件扩展名的文件名。每个程序集都有一个简单名,被称为程序集名或友好名称。
2.版本号:版本号由4个句点分开的整数字符串组成,以MajorVersion.MinorVersion.Build.Revision的形成。
3.文化信息:它是一个字符串,由2~5个字符组成,代表一种语言,或代表一种语言和一个国家或地区,如en-US或者de-DE。
4.公钥:这个128字节字符串应该是生成该程序集的公司的唯一的。

发布了35 篇原创文章 · 获赞 67 · 访问量 8530

猜你喜欢

转载自blog.csdn.net/EngraveSmile/article/details/84638139