C# using作用透析 三种用法不用愁

开发 后端
这里将介绍C# using的三种作用,分别是引用命名空间、为命名空间或类型创建别名和使用using语句,定义一个范围,在范围结束时处理对象。

三种不同的C# using作用,令using关键字在.NET程序开发过程中占有重要的地位,特别是进行命名空间或创建别名时。

C# using作用,微软MSDN上解释总共有三种用途

1、引用命名空间。2、为命名空间或类型创建别名。3、使用using语句。

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

这个就不用说了吧,比如大家最常用的:usingSystem.Text;

2、为命名空间或类型创建别名:

当同一个cs引用了不同的命名空间,但这些命名控件都包括了一个相同名字的类型的时候,可以使用using关键字来创建别名,这样会使代码更简洁。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

  1. usingSystem;  
  2. usingaClass=NameSpace1.MyClass;  
  3. usingbClass=NameSpace2.MyClass;  
  4. ......  
  5. //使用方式  
  6. aClassmy1=newaClass();  
  7. Console.WriteLine(my1);  
  8. bClassmy2=newbClass();  
  9. Console.WriteLine(my2); 

3、使用using语句,定义一个范围,在范围结束时处理对象。(不过该对象必须实现了IDisposable接口)。其功能和try,catch,Finally完全相同。
比如:

  1. using(SqlConnectioncn=newSqlConnection(SqlConnectionString)){......}//数据库连接  
  2. using(SqlDataReaderdr=db.GetDataReader(sql)){......}//DataReader 

PS:这里SqlConnection和SqlDataReader对象都默认实现了IDisposable接口,如果是自己写的类,那就要自己手动来实现IDisposable接口。比如:

  1. using(Employeeemp=newEmployee(userCode))  
  2. {  
  3. ......  
  4. }  
  5. Emlpoyee.cs类:  
  6. publicclassEmployee:IDisposable  
  7. {  
  8.  
  9. 实现IDisposable接口#region实现IDisposable接口  
  10. /**////  
  11. ///通过实现IDisposable接口释放资源  
  12. ///  
  13. publicvoidDispose()  
  14. {  
  15. Dispose(true);  
  16. GC.SuppressFinalize(this);  
  17. }  
  18. /**////  
  19. ///释放资源实现  
  20. ///  
  21. ///  
  22. protectedvirtualvoidDispose(booldisposing)  
  23. {  
  24. if(!m_disposed)  
  25. {  
  26. if(disposing)  
  27. {  
  28. //Releasemanagedresources  
  29. if(db!=null)  
  30. this.db.Dispose();  
  31. if(dt!=null)  
  32. this.dt.Dispose();  
  33. this._CurrentPosition=null;  
  34. this._Department=null;  
  35. this._EmployeeCode=null;  
  36.  
  37. }  
  38. //Releaseunmanagedresources  
  39. m_disposed=true;  
  40. }  
  41. }  
  42. /**////  
  43. ///析构函数  
  44. ///  
  45. ~Employee()  
  46. {  
  47. Dispose(false);  
  48. }  
  49. privateboolm_disposed;  
  50.  
  51. #endregion  

使用using语句需要注意的几点:

3.1、对象必须实现IDisposeable接口,这个已经说过,如果没有实现编译器会报错误。
如:

  1. using(stringstrMsg="MyTest")  
  2.  
  3. {  
  4. Debug.WriteLine(strMsg);//Can'tbecompiled  
  5.  

3.2、第二个using对象检查是静态类型检查,并不支持运行时类型检查,因此如下形式也会出现编译错误。

  1. SqlConnectionsqlConn=newSqlConnection(yourConnectionString);  
  2. objectobjConn=sqlConn;  
  3. using(objConn)  
  4. {  
  5. Debug .WriteLine(objConn.ToString());//Can'tbecompiled
    }

不过对于后者,可以通过“as”来进行类型转换方式来改进。

  1. SqlConnectionsqlConn=newSqlConnection(yourConnectionString);  
  2. objectobjConn=sqlConn;  
  3. using(objConnasIDisposable)  
  4. {  
  5. Debug.WriteLine(objConn.ToString());  

3.3、当同时需要释放多个资源时候,并且对象类型不同,可以这样写:

  1. using(SqlConnectionsqlConn=newSqlConnection(yourConnectionString))  
  2. using(SqlCommandsqlComm=newSqlCommand(yourQueryString,sqlConn))  
  3. {  
  4. sqlConn.Open();//Openconnection  
  5. //OperateDBhereusing"sqlConn"  
  6. sqlConn.Close();//Closeconnection  

如果对象类型相同,可以写到一起:

  1. using(FontMyFont=newFont("Arial",10.0f),MyFont2=newFont("Arial",10.0f))  
  2. {  
  3. //useMyFontandMyFont2  
  4. }//compilerwillcallDisposeonMyFontandMyFont2 

3.4、using关键字只是针对C#语句,对于VB等其他语言还没有对应的功能。

PS:本C# using的三种作用属个人学习总结,欢迎交流。

【编辑推荐】

  1. C#类和结构简单介绍
  2. C# explicti和implicit详解
  3. C#编写ActiveX控件详细介绍
  4. C# StringBuilder和String浅析
  5. C#别名指示符学习经验
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-26 18:10:44

C# using的用法

2009-08-26 17:21:05

C# using

2009-08-26 14:01:33

C# using用法

2011-05-23 13:27:53

2024-06-04 17:02:38

newC#编程语言

2024-05-29 14:09:00

C#编程this

2009-08-26 18:14:11

C#排序算法

2011-07-04 15:14:49

C#

2009-08-06 15:26:18

C#异常类型

2009-08-28 09:43:05

C#事件

2009-08-27 16:00:59

C#中using用法

2011-07-06 10:47:52

C#using

2024-05-27 00:20:00

2009-09-08 10:37:57

C#遍历CheckBo

2024-08-13 08:25:16

C#外部程序方式

2024-02-26 13:47:00

C#Socket数据接收

2009-08-27 15:53:30

C#中using wo

2009-07-30 16:27:33

C#比较时间

2024-12-03 00:40:55

2009-08-20 17:30:02

C#连接字符串
点赞
收藏

51CTO技术栈公众号