命名空间using

引入命名空间

sing作为引入命名空间指令的用法规则为:   using Namespace;   

在.NET程序中,最常见的代码莫过于在程序文件的开头引入System命名空间,其原因在于System命名空间中封装了很多最基本最常用的操作,

下面的代码对我们来说最为熟悉不过:   using System;   

这样,我们在程序中就可以直接使用命名空间中的类型,而不必指定详细的类型名称。 

 关于:命名空间   命名空间是.NET程序在逻辑上的组织结构,而并非实际的物理结构,是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。例如,在.NET中很多的基本类型都位于System命名空间,数据操作类型位于System.Data命名空间,


using类似于Java语言的import指令,都是引入命名空间(Java中称作包)这种逻辑结构;而不同于C语言中的#include指令,用于引入实际的类库,   ·

 using引入命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操作,如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在程序集。因此,在源文件开头,引入多个命名空间,并非加载多个程序集,不会造成“过度引用”的弊端。

 using为命名空间创建别名的用法规则为:   using alias = namespace | type;   

其中namespace表示创建命名空间的别名;而type表示创建类型别名。

例如,在.NET Office应用中,常常会引入Microsoft.Office.Interop.Word.dll程序集,在引入命名空间时为了避免繁琐的类型输入,我们通常为其创建别名如下:  

 using MSWord = Microsoft.Office.Interop.Word;   


这样,就可以在程序中以MSWord来代替Microsoft.Office.Interop.Word前缀,如果要创建Application对象,则可以是这样,   

private static MSWord.Application ooo = new MSWord.Application();   


同样,也可以创建类型的别名,用法为:   

using MyConsole = System.Console;   class UsingEx   {   public static void Main()   {   MyConsole.WriteLine("应用了类的别名。");   }   }  

 而创建别名的另一个重要的原因在于同一cs文件中引入的不同命名空间中包括了相同名称的类型,为了避免出现名称冲突可以通过设定别名来解决,例如:  

namespace Boyspace   {   public class Player   {   public static void Play()   {   System.Console.WriteLine("Boys play football.");   }   }   }   namespace Girlspace   {   public class Player   {   public static void Play()   {   System.Console.WriteLine("Girls play violin.");   }   }   }  

 

以using创建别名,有效的解决了这种可能的命名冲突,尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案,using使得这一问题迎刃而解,不费丝毫功夫,同时在编码规范上看来也更加的符合编码要求。

4. 强制资源清理

 Dispose模式   

Dispose模式是.NET提供的一种显式清理对象资源的约定方式,用于在.NET 中释放对象封装的非托管资源。

因为非托管资源不受GC控制,对象必须调用自己的Dispose()方法来释放,这就是所谓的Dispose模式。

从概念角度来看,Dispose模式就是一种强制资源清理所要遵守的约定;

从实现角度来看,Dispose模式就是让要一个类型实现IDisposable接口,从而使得该类型提供一个公有的Dispose方法。  

using语句提供了强制清理对象资源的便捷操作方式,允许指定何时释放对象的资源,其典型应用为:  

using (Font f = new Font("Verdana", 12, FontStyle.Regular))  
 {   
	//执行文本绘制操作  
 	Graphics g = e.Graphics;   
	Rectangle rect = new Rectangle(10, 10, 200, 200);   
	g.DrawString("Try finally dispose font.", f, Brushes.Black, rect);  
 }//运行结束,释放f对象资源  

在上述典型应用中,using语句在结束时会自动调用欲被清除对象的Dispose()方法。

因此,该Font对象必须实现IDispose接口,才能使用using语句强制对象清理资源。

我们查看其类型定义可知:   

public sealed class Font : MarshalByRefObject, ICloneable, ISerializable, IDisposable  

Font类型的确实现了IDisposeable接口,也就具有了显示回收资源的能力。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值