C#中using的三种用法

    技术2022-05-19  27

    1.   引用命名空间

          如using System.Web;

     

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

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

     

          using System;using aClass=NameSpace1.MyClass;using bClass=NameSpace2.MyClass;//使用方式aClassmy1=new aClass();Console.WriteLine(my1);aClassmy2=new bClass();Console.WriteLine(my2);

     

    3.   使用using语句

          定义一个范围,在范围结束时处理对象,其功能和try,catch,finally完全相同。

          如:using (SqlDataReader myReader = SqlHelper.ExecuteReader(conn, CommandType.Text, sql))

     

          注意:

            (1)  该对象必须实现了IDisposable接口。

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

     

                   using (Employee emp=new Employee(userCode)){ ......}Employee.cs类public class Employee:IDisposable{ //通过实现IDisposable接口释放资源 public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } //释放资源实现 protected virtual void Dispose(bool disposing) { if(!m_disposed) { if(disposing) { if(db!=null) { this.db.Dispose(); } if(dt!=null) { this.dt.Dispose(); } this._CurrentPosition=null; this._Department=null; this._EmployeeCode=null; } m_disposed=true; } } //析构函数 ~Employee() { Dispose(false); } private bool m_disposed;} 

         

            (2)  using对象检查是静态类型检查,并不支持运行时类型检查

     

                   SqlConnection sqlConn=new SqlConnection(yourConnection);object objConn=sqlConn;//不能编译通过using (objConn){ WriteLine(objConn.ToString()); }//可以编译通过using (objConn as IDisposable){ WriteLine(objConn.ToString());}

     

            (3)  当同时需要释放多个资源时,并且对象类型不同

     

                   using (SqlConnection sqlConn=new SqlConnection(yourConnectionString))using (SqlCommand sqlComm=new SqlCommand(QueryString,sqlConn)){ sqlConn.Open(); //运行过程 ...... sqlConn.Close();}

     

            (4)  using关键字只能针对C#语句,对于其他语言没有对应功能。

                 

     

     


    最新回复(0)