C# Using 用法

在.NET大家庭中,有不少的关键字承担了多种角色,例如new关键字就身兼数职,除了能够创建对象,在继承体系中隐藏基类成员,还在泛型声明中约束可能用作类型参数的参数,在详细讨论using的多重身份的基础上来了解.NET在语言机制上的简便与深邃。

那么,using的多重身份都体现在哪些方面呢,我们先一睹为快吧:

1、引入命名空间

2、创建别名

3、强制资源清理

下面,本文将从这几个角度来阐述using的多彩应用。

(1)引用命名空间

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

 
 
  1. using Namespace;  

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

与C/C++中的include和JAVA中的import功能相同。


(2)创建命名空间别名

using为命名空间创建别名的用法规则为:

 
 
  1. using alias = namespace | type;  

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

 
 
  1. using MSWord = Microsoft.Office.Interop.Word;  

这样,就可以在程序中以MSWord来代替Microsoft.Office.Interop.Word前缀,如果要创建Application对象,则可以是这样, 
而且还有一个好处就是,在一个.CS文件中引入了不同的命名空间但是相同的类名的时候,用别名就可以解决这问题了。类似于C语言的中的typedef。

3)强制资源清理 

用途:清理非托管资源,不受GC控制的资源。Using结束后会隐式的调用Disposable方法。

用法:

 
 
  1. using (Class1 c = new Class1())   
  2. {   
  3. }//清理非托管不受GC控制的资源  

但是当对象使用using关键字的时候,必须实现IDisposable接口。其实using的使用和try-catch-finaly中,在finaly代码域调用Disposable方法效果一样。注意Using不能使用多个不同的类。

 
 
  1. Class1 f = new Class1();   
  2. try   
  3. //执行代码   
  4. }   
  5. catch()   
  6. {   
  7. //异常处理   
  8. }   
  9. finally   
  10. {   
  11. f.Disposable();   

using 语句获取一个或多个资源,执行一个语句,然后处置该资源。 

using 语句: using ( 资源获取 ) 嵌入语句

资源获取: 局部变量声明

表达式

资源是实现 System.IDisposable 的类或结构,它包含名为 Dispose 的单个无参数方法。正在使用资源的代码可以调用 Dispose 以指示不再需要该资源。如果不调用 Dispose,则最终将因为垃圾回收而发生自动处置。

如果资源获取的形式是局部变量声明,那么此局部变量声明的类型必须为System.IDisposable 或是可以隐式转换为 System.IDisposable 的类型。如果资源获取的形式是表达式,那么此表达式必须是 System.IDisposable 或是可以隐式转换为 System.IDisposable 的类型。

在资源获取中声明的局部变量必须是只读的,且必须包含一个初始值设定项。

using 语句被翻译成三个部分:获取、使用和处置。资源的使用隐式封闭在包含一个 finally 子句的 try语句中。此 finally 子句处置资源。如果获取了 null 资源,则不进行对 Dispose 的调用,也不引发任何异常。

例如,下列形式的 using 语句

 
 
  1. using (R r1 = new R()) {   
  2. r1.F();   
  3. }  

完全等效于

 
 
  1. R r1 = new R();   
  2. try {   
  3. r1.F();   
  4. }   
  5. finally {   
  6. if (r1 != null) ((IDisposable)r1).Dispose();   

一个简单的关键字,多种不同的应用场合。本文从比较全面的角度,诠释了using关键字在.NET中的多种用法,值得指出的是这种用法并非实现于.NET的所有高级语言,本文的情况主要局限在C#中。

C#中,using有三种主要用法。首先,使用using命名空间可以简化代码编写,不需要指定详细的命名空间。例如,使用using System.Windows.Media;可以直接使用System.Windows.Media中的类和方法,而不需要每次都写完整的命名空间。 其次,using语句也是using的一种用法。使用using语句可以在一定的范围内有效地释放资源。只要在using语句的作用域内,使用的对象实现了IDisposable接口,使用using语句结束时会自动调用Dispose方法释放资源。这种用法主要用于需要手动释放资源的类,比如数据库连接对象。例如,可以使用using(SqlConnection conn=new SqlConnection("连接字符串")){...}来在代码块结束时自动释放SqlConnection对象。 最后,using别名是using的第三种用法。使用using别名可以为命名空间或类型创建一个简短的别名,以便在代码中更方便地使用。比如,可以使用using MyAlias = System.Windows.Media;来将System.Windows.Media命名空间简化为MyAlias,在代码中使用MyAlias代替System.Windows.Media。这样可以减少代码中的冗长,并提高代码的可读性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C# 中使用using的三种方法](https://blog.csdn.net/fuhanghang/article/details/84453734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C#using用法](https://blog.csdn.net/chunchunlaila/article/details/105589780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值