定义:
命名空间设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
作用:
就像上面定义里说的, 在较大的项目中,开发人员有很多,我们的代码可能和其他开发者的代码使用相同的类名、接口名、函数或常量名,如果不使用命名空间,使用名称时会起冲突。而使用命名空间将代码放到唯一的厂商命名空间里,我们的代码就可以和其他开发者使用相同的类名、接口名、函数或常量名。
与类的区别:
类是对象数据和操作的封装,是一个封装体。而命名空间就像是承装封装体的盘子,可以盛放多个封装体。而不同的盘子里面可能放着相同命名的封装体,在调用时只要表明具体的命名空间,就不会导致命名冲突。
引入:
通过using关键字,常见的用法是:
using System;
using Namespace std;
引入命名空间就相当于引入包的作用,这样就可以使用其中的变量名和函数
比如用using namespace std,表示所有的标准库函数都在标准命名空间std中进行了定义。
C#中常用的命名空间:
- using System; 主命名空间,包含所有.net基础类型和通用类型,比如Object,比如string等等
- using System.Collections; 集合命名空间,包含常用的如ArrayList等集合类
- using System.Configuration;
配置命名空间,包含应用程序配置相关的类比如:ConfigurationManager - using System.Data; 数据命名空间,包含ado.net最基础的类型,比如DbConnection等
- using System.Linq; 3.5引入的linq语法需要提供的支持类,主要包含了Enumerable扩展方法支持类
- using System.Web; asp.net所需要的核心命名空间,包含诸如HttpRuntime等的基础运行环境类
- using System.Web.Security;
asp.net在角色验证和安全方面的类库,比较重要的是FormsAuthentication - using System.Web.UI.WebControls; 服务器控件,如GridView就是在这个里面
- using
System.Data;包含有关专门操作SqlServer数据库的类,如SqlConnection,SqlCommand,SqlDateAdapter等,而Oledb中则包含的是操作所有数据库的类 - using System.Collections.Generic;泛型集合命名空间