三种不同的C# using作用,令using关键字在.NET程序开发过程中占有重要的地位,特别是进行命名空间或创建别名时。
为宜川等地区用户提供了全套网页设计制作服务,及宜川网站建设行业解决方案。主营业务为成都做网站、成都网站制作、宜川网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
C# using作用,微软MSDN上解释总共有三种用途:
1、引用命名空间。2、为命名空间或类型创建别名。3、使用using语句。
1、引用命名空间,这样就可以直接在程序中引用命名空间的类型而不必指定详细的命名空间。
这个就不用说了吧,比如大家最常用的:usingSystem.Text;
2、为命名空间或类型创建别名:
当同一个cs引用了不同的命名空间,但这些命名控件都包括了一个相同名字的类型的时候,可以使用using关键字来创建别名,这样会使代码更简洁。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
- usingSystem;
- usingaClass=NameSpace1.MyClass;
- usingbClass=NameSpace2.MyClass;
- ......
- //使用方式
- aClassmy1=newaClass();
- Console.WriteLine(my1);
- bClassmy2=newbClass();
- Console.WriteLine(my2);
3、使用using语句,定义一个范围,在范围结束时处理对象。(不过该对象必须实现了IDisposable接口)。其功能和try,catch,Finally完全相同。
比如:
- using(SqlConnectioncn=newSqlConnection(SqlConnectionString)){......}//数据库连接
- using(SqlDataReaderdr=db.GetDataReader(sql)){......}//DataReader
PS:这里SqlConnection和SqlDataReader对象都默认实现了IDisposable接口,如果是自己写的类,那就要自己手动来实现IDisposable接口。比如:
- using(Employeeemp=newEmployee(userCode))
- {
- ......
- }
- Emlpoyee.cs类:
- publicclassEmployee:IDisposable
- {
- 实现IDisposable接口#region实现IDisposable接口
- /**////
- ///通过实现IDisposable接口释放资源
- ///
- publicvoidDispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- /**////
- ///释放资源实现
- ///
- ///
- protectedvirtualvoidDispose(booldisposing)
- {
- if(!m_disposed)
- {
- if(disposing)
- {
- //Releasemanagedresources
- if(db!=null)
- this.db.Dispose();
- if(dt!=null)
- this.dt.Dispose();
- this._CurrentPosition=null;
- this._Department=null;
- this._EmployeeCode=null;
- }
- //Releaseunmanagedresources
- m_disposed=true;
- }
- }
- /**////
- ///析构函数
- ///
- ~Employee()
- {
- Dispose(false);
- }
- privateboolm_disposed;
- #endregion
- }
使用using语句需要注意的几点:
3.1、对象必须实现IDisposeable接口,这个已经说过,如果没有实现编译器会报错误。
如:
- using(stringstrMsg="MyTest")
- {
- Debug.WriteLine(strMsg);//Can'tbecompiled
- }
3.2、第二个using对象检查是静态类型检查,并不支持运行时类型检查,因此如下形式也会出现编译错误。
- SqlConnectionsqlConn=newSqlConnection(yourConnectionString);
- objectobjConn=sqlConn;
- using(objConn)
- {
- Debug .WriteLine(objConn.ToString());//Can'tbecompiled
}
不过对于后者,可以通过“as”来进行类型转换方式来改进。
- SqlConnectionsqlConn=newSqlConnection(yourConnectionString);
- objectobjConn=sqlConn;
- using(objConnasIDisposable)
- {
- Debug.WriteLine(objConn.ToString());
- }
3.3、当同时需要释放多个资源时候,并且对象类型不同,可以这样写:
- using(SqlConnectionsqlConn=newSqlConnection(yourConnectionString))
- using(SqlCommandsqlComm=newSqlCommand(yourQueryString,sqlConn))
- {
- sqlConn.Open();//Openconnection
- //OperateDBhereusing"sqlConn"
- sqlConn.Close();//Closeconnection
- }
如果对象类型相同,可以写到一起:
- using(FontMyFont=newFont("Arial",10.0f),MyFont2=newFont("Arial",10.0f))
- {
- //useMyFontandMyFont2
- }//compilerwillcallDisposeonMyFontandMyFont2
3.4、using关键字只是针对C#语句,对于VB等其他语言还没有对应的功能。
PS:本C# using的三种作用属个人学习总结,欢迎交流。
分享名称:C#using作用透析三种用法不用愁
文章链接:http://www.shufengxianlan.com/qtweb/news3/172153.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联