C# using的作用 除了引用还有一个微信是什么么?

在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
using 指令 和语句 new 创建实例 new 隐藏基类中方法using 引入名称空间或者使用非托管资源new 新建实例或者隐藏父类方法
namespace Demo{&&&&&&& class Class1&&& {&&&&&&&&&&&&&&& [STAThread]&&&&&&& static void Main(string[] args)&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& Test obj1=new Test();
&&&&&&&&&&& using(Test obj2=new Test())&&&&&&&&&&& {&&&&&&&&&&& }&&&&&&& }&&& }
&&& class Test:System.IDisposable&&& {&&&&&&&&&&&&&& public int Val&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& }&&&&&&& #region IDisposable Members
&&&&&&& public void Dispose()&&&&&&& {&&&&&&&&&&&&&&&&&&& }
&&&&&&& #endregion&&& }}上面代码对应的IL语言解开了USING的秘密:
.method private hidebysig static void& Main(string[] args) cil managed{& .entrypoint& .custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) & // Code size&&&&&& 25 (0x19)& .maxstack& 1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ---推导堆栈 & .locals init ([0] class Demo.Test obj1,&&&&&&&&&& [1] class Demo.Test obj2)&&&&&&&&&&&&&&& --定义了两局部变量& IL_0000:& newobj&&&& instance void Demo.Test::.ctor()& IL_0005:& stloc.0&&& -- 创建了Test对象并存放到 第一个局部量& IL_0006:& newobj&&&& instance void Demo.Test::.ctor()& IL_000b:& stloc.1&& -- 创建了Test对象并存放到第二个局部量& .try& {&&& IL_000c:& leave.s&&& IL_0018& -- 你可以看作是GOTO语句 ,但是你要清楚,异常和RETURN,GOTO都不能逃出FINALLY& }& // end .try&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FINALLY是一定会执行& finally& {&&& IL_000e:& ldloc.1&&&&&&&&&&&&&&&&&&&&&&& --载入局部量1,也是就我们用USING扩起的那个局部量)&&& IL_000f:& brfalse.s& IL_0017&&&&&&& --发现,如果这个对象是NULL的,就结束& ,否则就调用对象上的DISPOSE方法,哦原来如此&&& IL_0011:& ldloc.1&&&&&&&&&&&&&&&&&&&&& -- 我们终于发现了秘密,^_^,假如面试前你正好研究过,你回答的是否就更清晰!&&& IL_0012:& callvirt&& instance void [mscorlib]System.IDisposable::Dispose()&&& IL_0017:& endfinally& }& // end handler& IL_0018:& ret} // end of method Class1::Main现在我要回答后面的问题了,是框架帮我做了手脚,他强制帮我调用对象的DISPOSE资源释放方法,而且,如果你的对象没有实现此IDISPOSABLE接口,却用了USING,编译是不会通过的哟!这里看来,USING的时机是当对象使用了非托管资源或是比较宝贵的资源,而对于托管的或非宝贵的资源,我可以依赖GC(垃圾回收机制,garbage collection),没有必要自己画蛇添足。而且TRY块是会影响效率的。
请各位遵纪守法并注意语言文明C#&多文件编译时,如何进行空间的引用(using)?
为了更深入的了解命名空间,我做了下面的几个测试:
写了两个文件,一个是CodeFile1.cs
一个是Program.cs,分别如下:
CodeFile1.cs:
namespace H1
public H1_c()
&&&&&&&&&&&
Console.WriteLine("H1_c");
public H2_c()
&&&&&&&&&&&
Console.WriteLine("H2_c");
Program.cs:
class Test
static void Main()
&&&&&&&&&&&
H1_c h1 = new H1_c();
&&&&&&&&&&&
H2_c h2 = new H2_c();
按F7编译后,没有问题,如果删除using
H1,会报错,说找不到H1_c这个类,这个给了我们一个启示:
★在多文件编译时,如果想引入某个类,只需要使用“using”关键字包含这个类的空间。
下面进一步探讨。
对于上述的两个文件,作如下的更改:
CodeFile1.cs:
namespace H1
public H1_c()
&&&&&&&&&&&
Console.WriteLine("H1_c");
&&& namespace
class H2_c
&&&&&&&&&&&
&&&&&&&&&&&&&&&
public H2_c()
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
Console.WriteLine("H2_c");
&&&&&&&&&&&&&&&
&&&&&&&&&&&
Program.cs:
H1.H2;//应该加上这句,否则报错
class Test
static void Main()
&&&&&&&&&&&
H1_c h1 = new H1_c();
&&&&&&&&&&&
H2_c h2 = new H2_c();
还是按F7进行编译,发现会报错,原因在于空间引得不对。这里出现了一种情况,空间中还有空间,H1空间中还有空间H2,在Program.cs中,仅仅用using
H1将H1包含,找不到H2_c,此时应该再加一句:
所以,对于上面的结论,应该改为,
★在多文件编译时,如果想引入某个类,应当使用“using”关键字包含这个类所在空间的绝对地址。
这也就能解释在编程的过程中,为什么包含了System,还需包含System.Collections,因为要包含这个类所在空间的绝对的地址,如下:
这下面做更深一步的探讨,依旧重新写这两个文件:
CodeFile1.cs:
namespace H1
public H1_c()
&&&&&&&&&&&
Console.WriteLine("H1_c");
&&&&&&&&&&&
public H2_c()
&&&&&&&&&&&
&&&&&&&&&&&&&&&
Console.WriteLine("H2_c");
&&&&&&&&&&&
Program.cs:
namespace H1
static void Main()
&&&&&&&&&&&
H1_c h1 = new H1_c();
&&&&&&&&&&&
H2_c h2 = new H2_c();
按F7编译通过了,在这里,并没有使用using H1的方式,而是写了同样的一个命名空间,会自动的引入类。
分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。
下面进行总结:
★在多文件编译时,如果想引入某个类,应当使用“using”关键字包含这个类所在空间的绝对地址。
★分散在不同的源文件中的类,如果有相同的命名空间,可以直接引入。
命名空间,提供了一种组织相关类的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在一个命名空间中,可以嵌套其他的命名空间,为类型创建层次结构。命名空间与程序集无关,同一个程序集可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。
C#的源代码都以using System
开头,这是因为Microsoft提供的许多有用的类都包含在System命名空间中。
下面是一些常见的命名空间以及它们的作用:
System&&&&&&&&&&&&&&&&&&&&包含了基础类,用于定义类型/数组/字符串/事件/事件处理程序/
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&异常&处理
/接口/数据类型转换/数学计算/应用程序环境管理等等.
System.Coolections&&&&&&&&&&&&包含了一组用于管理对象集合(例如列表/队列/数组/哈希表/字典等)的类&&
System.Data&&&&&&&&&&&&&&&&&&
   主要包括了组成ADO.NET体系结构的类
System.diagnostics&&&&&&&&&&&&&&&&&&
提供用于调试/跟踪,以及与系统进程/事件日志/性能计数器进行交互的类
System.Drawing&&&&&&&&&&&&&&&&&&
  提供访问GDI+基本图形功能(在System.Drawing以下的命名空间,包括
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.Drawing.Drawing2D和System.Drawing.Text等,提供了更高级和更特
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
殊的GDI+图形功能)的类
System.IO&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
包含了用于读写数据流/文件和普通输入/输出(I/O)功能的类型和类
System.Reflection&&&&&&&&&&&&&&&&&&
 包括提供类型检测和动态绑定对象功能的类和接口
System.reflection.Emit&&&&&&&&&&&&&&&&&生成动态程序集
System.Text&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&包含用于字符编码/将字符块转换为字节快/将字节块转换为字符块等功能的
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&对象
System.Text.RegularExpressions包含了提供访问.NET框架正则表达引擎的类
System.Timer&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
提供了Timer组件
System.Web&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 包含了用于实施浏览器/通信和其他Web相关功能的类
System.Web.Services&&&&&&&&&&&&&&&&&&
  包含了用于创建和消费Web服务的类
System.Web.UI&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
包含了用于创建Web页和控件的用户接口的类和接口
System..Forms&&&&&&&&&&&&&&&&&&
 包含了用于创建基于WINDOWS的用户接口的类
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。> 问题详情
在c中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实
悬赏:0&答案豆
提问人:匿名网友
发布时间:
在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法请帮忙给出正确答案和分析,谢谢!
我有更好的答案
您可能感兴趣的试题
12.谈谈类和结构的区别?类是引用类型、结构是值类型23.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……在C# 中要用System.Drawing 为什么要在引用里加using System.Drawing 啊?有哪位高手帮我解决一下吧,我对这个问题很迷惑!搞不明白为什么,先谢谢你们啦!
一谜熋摘盀榗
为了引用系统提供的程序集,使用using.,免去你要自己写很多底层的东西,那些也不是你现在能写出来.举个例子吧:你要跟某人联系,最好最快最简单的办法就是打电话,这时候你就using电话,电话能提供给你 打电话(当然还有其他的了)这个功能,你不用自己去制造电话,你只是在使用电话所提供的功能.我举的很通俗了吧?联系你的问题:你要对图像图像方面编程,你using System.Drawing,这个程序集给你提供了很多图形图像处理方面的功能,你不用自己去写这些功能函数,你只要合理的使用,让它们发挥最大最好的作用就行.
为您推荐:
其他类似问题
扫描下载二维码C# using作用透析 三种用法不用愁_C# 博文_CS程序员之窗
热门搜索: ,
您的位置:
&&&&&&&&&&&C# using作用透析 三种用法不用愁
C# using作用透析 三种用法不用愁
来自:CSDN Blog&
字体大小:【&&】
摘要:这里将介绍C# using的三种作用,分别是引用命名空间、为命名空间或类型创建别名和使用using语句,定义一个范围,在范围结束时处理对象。
&&& 三种不同的C# using作用,令using关键字在.NET程序开发过程中占有重要的地位,特别是进行命名空间或创建别名时。
&&& C# using作用,微软MSDN上解释总共有三种用途:
&&& 1、引用命名空间。2、为命名空间或类型创建别名。3、使用using语句。
&&& 1、引用命名空间,这样就可以直接在程序中引用命名空间的类型而不必指定详细的命名空间。
&&& 这个就不用说了吧,比如大家最常用的:usingSystem.T
&&& 2、为命名空间或类型创建别名:
&&& 当同一个cs引用了不同的命名空间,但这些命名控件都包括了一个相同名字的类型的时候,可以使用using关键字来创建别名,这样会使代码更简洁。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
usingS &usingaClass=NameSpace1.MyC &usingbClass=NameSpace2.MyC &...... &//使用方式 &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接口 &/// &&&publicvoidDispose() &{ &Dispose(true); &GC.SuppressFinalize(this); &} &/// &&&&protectedvirtualvoidDispose(booldisposing) &{ &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); &} &privateboolm_ &&#endregion &}&
&&& 使用using语句需要注意的几点:
&&& 3.1、对象必须实现IDisposeable接口,这个已经说过,如果没有实现编译器会报错误。
using(stringstrMsg=&MyTest&) &&{ &Debug.WriteLine(strMsg);&&}&
&&& 3.2、第二个using对象检查是静态类型检查,并不支持运行时类型检查,因此如下形式也会出现编译错误。
SqlConnectionsqlConn=newSqlConnection(yourConnectionString); &objectobjConn=sqlC &using(objConn) &{ &Debug&.WriteLine(objConn.ToString());//Can'tbecompiled}
&&& 不过对于后者,可以通过&as&来进行类型转换方式来改进。
SqlConnectionsqlConn=newSqlConnection(yourConnectionString); &objectobjConn=sqlC &using(objConnasIDisposable) &{ &Debug.WriteLine(objConn.ToString()); &}&
&&& 3.3、当同时需要释放多个资源时候,并且对象类型不同,可以这样写:
using(SqlConnectionsqlConn=newSqlConnection(yourConnectionString)) &using(SqlCommandsqlComm=newSqlCommand(yourQueryString,sqlConn)) &{ &sqlConn.Open();&&sqlConn.Close();&}&
&&& 如果对象类型相同,可以写到一起:
using(FontMyFont=newFont(&Arial&,10.0f),MyFont2=newFont(&Arial&,10.0f)) &{ &&}&
&&& 3.4、using关键字只是针对C#语句,对于VB等其他语言还没有对应的功能。
&&& PS:本C# using的三种作用属个人学习总结,欢迎交流。
作者:望穿秋水
上一篇:&&&&&&下一篇:
相关文章:
该文章已有条评论
作品版权作者所有,如果无意之中侵犯了你的版权请来信告知,本站将在3个工作日内删除。
CopyRight@
All rights reserved
&&&&苏ICP备号
客户服务信箱:starts_}

我要回帖

更多关于 微信是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信