在ASPNET中NET Framework为我们提供了丰富的基类为了能在程序中引用这些基类我们必须先引用这些基类的命名空间我们都知道如果我们想在C++中引用一个文件函数时我必须先调用该文件例如<#include studioh>其实它和ASPNET中命名空间的引用是同一原理但是它们又有本质上的区别
在ASPNET中命名空间提供了一种组织相关类和其他类型的方式与文件或组件不同命名空间是一种逻辑组合而不是物理组合在C#文件中定义类时可以把它包括在命名空间定义中以后在定义另一个类在另一个文件中执行相关操作时就可以在同一个命名空间中包含它创建一个逻辑组合告诉使用类的开发人员这两个类是如何相关的以及如何使用它们:
using System;
using SystemData;
using SystemConfiguration;
using SystemWeb;
using SystemWebSecurity;
namespace vlink
{
public class Agent
{
把一个类型放在命名空间中可以有效地给这个类型指定一个较长的名称该名称包括类型的命名空间后面是句点()和类的名称在上面的例子中Agen全名是vlinkAgent这样有相同短名的不同的类就可以在同一个程序中使用了
也可以在命名空间中嵌套其他命名空间为类型创建层次结构:
using System;
using SystemData;
using SystemConfiguration;
using SystemWeb;
using SystemWebSecurity;
namespace vlink
{
namespace Agent
{
namespace CallBack
{
}
}
}
每个命名空间名都由它所在命名空间的名称组成这些名称用句点分隔开首先是最外层的命名空间最后是它自己的短名所以Agent命名空间的全名是vlinkAgentCallBack类的全名是vlinkAgentCallBack
注意不允许在另一个嵌套的命名空间中声明多部分的命名空间
命名空间与程序集无关同一个程序集中可以有不同的命名空间也可以在不同的程序集中定义同一个命名空间中的类型
using语句
显然命名空间相当长键入起来很繁琐用这种方式指定某个特定的类也是不必要的如本章开头所述C#允许简写类的全名为此要在文件的顶部列出类的命名空间前面加上using关键字在文件的其他地方就可以使用其类型名称来引用命名空间中的类型了:
using System;
using vlink;
如前所述所有的C#源代码都以语句using System;开头这仅是因为Microsoft提供的许多有用的类都包含在System命名空间中
如果using指令引用的两个命名空间包含同名的类就必须使用完整的名称(或者至少较长的名称)确保编译器知道访问哪个类型例如类CallBack同时存在于Agent和vlink命名空间中如果要在命名空间Agent中创建一个类Test并在该类中实例化一个CallBack类就需要指定使用哪个类
因为using语句在C#文件的开头C和C++也把#include放在这里所以从C++迁移到C#的程序员常把命名空间与C++风格的头文件相混淆不要犯这种错误using语句在这些文件之间并没有真正建立物理链接C#也没有对应于C++头文件的部分
命名空间的别名
using关键字的另一个用途是给类和命名空间指定别名如果命名空间的名称非常长又要在代码中使用多次但不希望该命名空间的名称包含在using指令中(例如避免类名沖突)就可以给该命名空间指定一个别名其语法如下:
using alias = NamespaceName;
ASPNET中各命名空间及作用
命名空间描述
MicrosoftCSharp支持C#语言编译和生成代码
System包含了基础类用于定义类型/数组/字符串/事件/事件处理程序/
异常处理 /接口/数据类型转换/数学计算/应用程序环境管理等等.
SystemCoolections包含了一组用于管理对象集合(例如列表/队列/数组/哈希表/字典等)的类
SystemData 主要包括了组成ADONET体系结构的类
Systemdiagnostics 提供用于调试/跟蹤以及与系统进程/事件日志/性能计数器进行交互的类
SystemDrawing 提供访问GDI+基本图形功能(在SystemDrawing以下的命名空间包括
SystemDrawingDrawingD和SystemDrawingText等提供了更高级和更特
殊的GDI+图形功能)的类
SystemIO 包含了用于读写数据流/文件和普通输入/输出(I/O)功能的类型和类
SystemReflection 包括提供类型检测和动态绑定对象功能的类和接口
SystemreflectionEmit生成动态程序集
SystemText包含用于字符编码/将字符块转换为字节快/将字节块转换为字符块等功能的
对象
SystemTextRegularExpressions包含了提供访问.NET框架正则表达引擎的类
SystemTimer 提供了Timer组件
SystemWeb 包含了用于实施浏览器/服务器通信和其他Web相关功能的类
SystemWebServices 包含了用于创建和消费Web服务的类
SystemWebUI 包含了用于创建Web页和控件的用户接口的类和接口
SystemWindowsForms 包含了用于创建基于WINDOWS的用户接口的类
System
XML提供了支持处理XML的类