您的位置:首页 > 职场人生

黑马程序员_C#命名空间

2014-04-01 23:12 483 查看
命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员这两个类是如何相关的以及如何使用它们:

namespace CustomerPhoneBookApp
{
 using System;
 public struct Subscriber
 {
  // Code for struct here...
 }
}
  把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点(.)和类的名称。在上面的例子中,Subscriber结构的全名是CustomerPhoneBookApp.Subscriber。这样,有相同短名的不同的类就可以在同一个程序中使用了。

  也可以在命名空间中嵌套其他命名空间,为类型创建层次结构:

namespace Wrox
{
 namespace ProCSharp
 {
  namespace Basics
  {
   class NamespaceExample
   {
    // Code for the class here...
   }
  }
 }
}
  每个命名空间名都由它所在命名空间的名称组成,这些名称用句点分隔开,首先是最外层的命名空间,最后是它自己的短名。所以ProfessionalCSharp命名空间的全名是Wrox.ProCSharp,NamespaceExample类的全名是Wrox.ProCSharp.Basics.NamespaceExample。

  使用这个语法也可以组织自己的命名空间定义中的命名空间,所以上面的代码也可以写为:

namespace Wrox.ProCSharp.Basics
{
 class NamespaceExample
 {
  // Code for the class here...
 }
}
  注意不允许在另一个嵌套的命名空间中声明多部分的命名空间。

  命名空间与程序集无关。同一个程序集中可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。

  using语句

  显然,命名空间相当长,键入起来很繁琐,用这种方式指定某个特定的类也是不必要的。如本章开头所述,C#允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上using关键字。在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了:

using System;
using Wrox.ProCSharp;
  如前所述,所有的C#源代码都以语句using System;开头,这仅是因为Microsoft提供的许多有用的类都包含在System命名空间中。

  如果using指令引用的两个命名空间包含同名的类,就必须使用完整的名称(或者至少较长的名称),确保编译器知道访问哪个类型,例如,类NamespaceExample同时存在于Wrox.ProCSharp.Basics和Wrox.ProCSharp.OOP命名空间中,如果要在命名空间Wrox.ProCSharp中创建一个类Test,并在该类中实例化一个NamespaceExample类,就需要指定使用哪个类:

using Wrox.ProCSharp;
class Test
{
 public static int Main()
 {
  Basics.NamespaceExample nSEx = new Basics.NamespaceExample();
  //do something with the nSEx variable
  return 0;
 }
}
  因为using语句在C#文件的开头,C和C++也把#include放在这里,所以从C++迁移到C#的程序员常把命名空间与C++风格的头文件相混淆。不要犯这种错误,using语句在这些文件之间并没有真正建立物理链接。C#也没有对应于C++头文件的部分。

  公司应花一定的时间开发一种命名空间模式,这样其开发人员才能快速定位他们所需要的功能,而且公司内部使用的类名也不会与外部的类库相冲突。本章后面将介绍建立命名空间模式的规则和其他命名约定。

  命名空间的别名

  using关键字的另一个用途是给类和命名空间指定别名。如果命名空间的名称非常长,又要在代码中使用多次,但不希望该命名空间的名称包含在using指令中(例如,避免类名冲突),就可以给该命名空间指定一个别名,其语法如下:

  using alias = NamespaceName;

  下面的例子(前面例子的修订版本)给Wrox.ProCSharp.Basics命名空间指定别名Introduction,并使用这个别名实例化了一个NamespaceExample对象,这个对象是在该命名空间中定义的。它有一个方法GetNamespace(),该方法调用每个类都有的GetType()方法,以访问表示类的类型的Type对象。下面使用这个对象来返回类的命名空间名:

using System;
using Introduction = Wrox.ProCSharp.Basics;
class Test
{
 public static int Main()
 {
  Introduction.NamespaceExample NSEx =new Introduction.NamespaceExample();
  Console.WriteLine(NSEx.GetNamespace());
  return 0;
 }
}

namespace Wrox.ProCSharp.Basics
{
 class NamespaceExample
 {
  public string GetNamespace()
  {
   return this.GetType().Namespace;
  }
 }
}
详解:

一、基础命名空间

System.Collections

包含了一些与集合相关的类型,比如列表,队列,位数组,哈希表和字典等.

System.IO

包含了一些数据流类型并提供了文件和目录同步异步读写.

System.Text

包含了一些表示字符编码的类型并提供了字符串的操作和格式化

System.Reflection

包括了一些提供加载类型,方法和字段的托管视图以及动态创建和调用类 型功能的类型.

System.Threading

提供启用多线程的类和接口.

二、图形命名空间

System.Drawing

这个主要的GDI+命名空间定义了许多类型,实现基本的绘图类型(字体,钢笔,基本画笔等)和无所不能的Graphics对象.

System.Drawing2D

这个命名空间提供高级的二维和失量图像功能.

System.Drawing.Imaging

这个命名空间定义了一些类型实现图形图像的操作.

System.Drawing.Text

这个命名空间提供了操作字体集合的功能.

System.Drawing.Printing

这个命名空间定义了一些类型实现在打印纸上绘制图像,和打印机交互以及格式化某个打印任务的总体外观等功能.

三、数据命名空间

System.Data

包含了数据访问使用的一些主要类型.

System.Data.Common

包含了各种数据库访问共享的一些类型.

System.XML

包含了根据标准来支持XML处理的类.

System.Data.OleDb

包含了一些操作OLEDB数据源的类型.

System.Data.Sql

能使你枚举安装在当前本地网络的SQL Server实例.

System.Data.SqlClient

包含了一些操作MS SQL Server数据库的类型,提供了和 System.Data.OleDb相似的功能,但是针对SQL做了优化.

System.Data.SqlTypes

提供了一些表示SQL数据类型的类.

System.Data.Odbc

包含了操作Odbc数据源的类型.

System.Data.OracleClient

包含了操作Odbc数据库的类型.

System.Transactions

这个命名空间提供了编写事务性应用程序和资源管理器的一些类.

四、WEB命名空间

System.Web

这个命名空间包含启用浏览器/服务器通信的类和接口.这些命名空间类用于管 理到客户端的HTTP输出和读取HTTP请求.附加的类则提供了一些功能,用于服 务器端的应用程序以及进程,Cookie管理,文件传输,异常信息和输出缓存的控制.

System.Web.UI

这个命名空间包含Web窗体的类,包括Page类和用于创建Web用户界面的其 他标准类.

System.Web.UI.HtmlControls

这个命名空间包含用于HTML特定控件的类,这些控件可以添加到Web窗体中 以创建Web用户界面

System.Web.UI.WebControls

包含创建ASP.NET服务器控件的类,当添加到窗体时,这些控件将呈现浏览器特 定的HTML和脚本,用于创建和设备无关的Web用户界面.

System.Web.Mobile

包含生成ASP.NET移动应用程序所需要的核心功能,包括身份验证和错误处理.

System.Web.UI.MobileControls

包括一组ASP.NET服务器控件,这些控件可以针对不同的移动设备呈现应用程 序.

System.Web.Services

包含能使你使用和生成XML Web Service的类,这些服务是驻留在服务器中的 可编程实体,并通过标准Internet协议公开.

五、框架服务命名空间

System.Diagnostics

这个命名空间所提供的类允许你启动系统进程,读取和写入事件日志以及使用性 能计数器监视系统性能.

System.DirectoryServices

这个命名空间所提供的类可便于从托管代码中访问Active Directory.此命名空 间中的类可以与任何Active Directory服务提供程序一起使用.

System.Media

包含用于播放声音文件和访问系统提供的声音的类.

System.Management

这个命名空间提供的类用于管理一些信息和事件,它们关系到系统,设备和WMI 基础结构所使用的应用程序.

System.Messaging

这个命名空间提供的类用于连接到网络上的消息队列,向队列发送消息,从队列 接收或查看消息.

System.ServiceProcess

这个命名空间提供的类用于安装和运行服务,服务是长期运行的可执行文件,它 们不通过用户界面来运行.

System.Timers

这个命名空间提供基于服务器的计时器组件,用以按指定的间隔引发事件.

六、安全性命名空间

System.Security

这个命名空间提供公共语言运行库安全性系统的基础结构.

System.Net.Security

这个命名空间提供用于主机间安全通信的网络流.

System.Web.Security

这个命名空间包含的类用于在Web应用程序中实现ASP.NET安全性.

七、网络命名空间

System.Net

包含的类可为当前网络上的多种协议提供简单的编程接口.

System.Net.Cache

这个命名空间定义了一些类和枚举,用于为使用WebRequest和HttpWebRequest类获取的资源定义缓存策略.

System.Net.Configuration

这个命名空间包含了以编程方式访问和更新System.Net命名空间的配置设置的类.

System.Net.Mime

这个命名空间包含了用于将电子邮件发送到SMTP服务器进行传送的类.

System.Net.Networkinformation

这个命名空间提供对网络流量数据,网络地址信息和本地计算机的地址更改通知

的访问,还包含实现Ping实用工具的类.你可以使用Ping和相关的类来检查是否 可通过网络访问某台计算机.

System.Net.Sockets

这个命名空间为严格控制网络访问的开发人员提供Windows套接字接口的托 管实现

八、配置命名空间

System.Configuration

这个命名空间包含用于以编程方式访问.Net Framework配置设置并处理配置 文件中错误的类.

System.Configuration.Assemblies

这个命名空间包含用于配置程序集的类.

System.Configuration.Provider

这个命名空间包含由服务器和客户端应用程序共享,以支持可插接式模型轻松添 加或移除功能的基类.

九、本地化命名空间

System.Globalization

包含的类定义与区域性相关的信息,其中包括语言,国家\地区,所使用的日历,日期 格式的模式,货币与数字以及字符串的排序顺序.

System.Resources

这个命名空间提供一些类和接口,它们使开发人员得以创建,存储并管理应用程 序中使用的各种区域性特定资源.

System.Resources.Tools

这个命名空间包含StronglyTypedResourceBuilder类,该类提供对强类型资源 的支持.这个编译时功能通过创建包含一组静态只读属性的类封装对资源的访问, 从而使得使用资源变得更加容易
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: