当前位置: 首页 > news >正文

网站的作用有哪些百度站长平台网页手机

网站的作用有哪些,百度站长平台网页手机,河北工程大学最新消息,大连百度快速排名优化接上一篇.net框架读书笔记---CLR内存管理\垃圾收集#xff08;二#xff09;#xff0c;主要学习了终止化对象#xff08;实现了Finalize方法的对象#xff09;#xff0c;了解了终止化对象的弊端#xff0c;学习了通过实现IDisposable接口#xff0c;通过Dispose方法来…接上一篇.net框架读书笔记---CLR内存管理\垃圾收集二主要学习了终止化对象实现了Finalize方法的对象了解了终止化对象的弊端学习了通过实现IDisposable接口通过Dispose方法来清理非托管资源从而减轻垃圾收集器的压力本节继续学习。 一、使用实现了Dispose模式的类型 System.IO.FileStream其基类Stream实现了IDisposable接口 class Program { static void Main( string [] args) { // 创建要写入临时文件的字节 byte [] b  new byte [] { 1 , 2 , 3 , 4 , 5 }; FileStream fs  new FileStream(  temp.dat  , FileMode.Create); // 写入临时文件 fs.Write(b, 0 , b.Length); fs.Close(); // fs.Write(b, 0, b.Length); // 该行会爆出异常试图写入关闭的文件 File.Delete(  temp.dat  ); } } 上面的代码如果File.Delete之前不调用close是会报错的delete之前必须保证文件已经关闭。注意调用CLose方法后FileStream对象仍然在托管堆中最后垃圾收集器会运行并将该FileStream对象判定为可收集的垃圾。这时垃圾收集器本来应该调用FileStream对象上的Finalize方法但是因为Dispose方法调用了GC的SuppressFinalize方法所以Finalize方法不再被调用对象的内存直接被回收。 二、C#的using语句 上面的例子应该使用try/catch块中如下 class Program { static void Main( string [] args) { // 创建要写入临时文件的字节 byte [] b  new byte [] { 1 , 2 , 3 , 4 , 5 }; FileStream fs  new FileStream(  temp.dat  , FileMode.Create); try { // 写入临时文件 fs.Write(b, 0 , b.Length); } catch { // do someting } finally { fs.Close(); } // fs.Write(b, 0, b.Length); // 该行会爆出异常试图写入关闭的文件 File.Delete(  temp.dat  ); } } 对于上述代码C#提供了更为简洁的语法可以使用using语句 class Program { static void Main( string [] args) { // 创建要写入临时文件的字节 byte [] b  new byte [] { 1 , 2 , 3 , 4 , 5 }; using (FileStream fs  new FileStream(  temp.dat  , FileMode.Create)) { // 写入临时文件 fs.Write(b, 0 , b.Length); } // fs.Write(b, 0, b.Length); // 该行会爆出异常试图写入关闭的文件 File.Delete(  temp.dat  ); } } 首先在using语句内初始化一个对象并将其引用保存在一个变量内。然后在using大括号内访问该变量。当编译这段代码编译器会自动创建一个try和finalily块。在finally内编译器会调用其Dispose方法显然using语句只能用于那些实现了IDisposable接口的类型。 上面代码的IL为 .method private hidebysig static void Main( string [] args) cil managed { .entrypoint // 代码大小 76 (0x4c) .maxstack 4 .locals init ([ 0 ] uint8[] b, [ 1 ] class [mscorlib]System.IO.FileStream fs, [ 2 ] bool CS$ 4 $ 0000 ) IL_0000: nop IL_0001: ldc.i4. 5 IL_0002: newarr [mscorlib]System.Byte IL_0007: dup IL_0008: ldtoken field valuetype  PrivateImplementationDetails{7FD0DAA5-56D7-474F-B21D-5AECDF07BAFB}  /  __StaticArrayInitTypeSize5   PrivateImplementationDetails{7FD0DAA5-56D7-474F-B21D-5AECDF07BAFB}  ::  $$method0x6000001-1  IL_000d: call void [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray( class [mscorlib]System.Array, valuetype [mscorlib]System.RuntimeFieldHandle) IL_0012: stloc. 0 IL_0013: ldstr  temp.dat  IL_0018: ldc.i4. 2 IL_0019: newobj instance void [mscorlib]System.IO.FileStream::.ctor( string , valuetype [mscorlib]System.IO.FileMode) IL_001e: stloc. 1 . try { IL_001f: nop IL_0020: ldloc. 1 IL_0021: ldloc. 0 IL_0022: ldc.i4. 0 IL_0023: ldloc. 0 IL_0024: ldlen IL_0025: conv.i4 IL_0026: callvirt instance void [mscorlib]System.IO.Stream::Write(uint8[], int32, int32) IL_002b: nop IL_002c: nop IL_002d: leave.s IL_003f } // end .try finally { IL_002f: ldloc. 1 IL_0030: ldnull IL_0031: ceq IL_0033: stloc. 2 IL_0034: ldloc. 2 IL_0035: brtrue.s IL_003e IL_0037: ldloc. 1 IL_0038: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_003d: nop IL_003e: endfinally } // end handler IL_003f: nop IL_0040: ldstr  temp.dat  IL_0045: call void [mscorlib]System.IO.File::Delete( string ) IL_004a: nop IL_004b: ret } // end of method Program::Main 很明显可以看到try/finally刚才试了一下using不能处理异常的看上面的IL会发现其没有catch感觉很不爽。using也不能滥用避免过早的调用了dispose。导致应用程序产生异常ObjectDisposeException
http://wiki.neutronadmin.com/news/409413/

相关文章:

  • 网站公司云建站怎么样平台公司名字大全
  • 网站创建教程你做的网站可视区域多少钱
  • 网站快速过备案广告设计与制作论文
  • 网站访问统计报告模板wordpress修改评论框
  • 中国国家标准建设信息网站激光东莞网站建设
  • 插件素材网站wordpress怎么去掉
  • 思途做的旅游网站wordpress文章只显示摘要
  • 辅助教学网站开发技术讨论方维制网站
  • 网站建设流程平台网站设计行业资讯
  • c 网站开发框架有程序外包接单
  • 局网站建设合同长春制作公司网站
  • 石家庄做网站推广排名的公司西安网站建设案例
  • 外包做网站一般多少钱北京朝阳区二手房出售
  • 现货黄金什么网站可以做直播做设计应该看哪些网站
  • 电子商务网站建设教程pdf一台电脑如何做网站
  • 石化建设分会网站百度索引量和网站排名
  • 企业网站的制作用到的技术静安区网站开发
  • 专业定制网站设计阳春网站建设
  • 保健品 东莞网站建设商城网站建设二次开发
  • 淘宝客的优惠卷网站怎么做的互联网创业项目网
  • 如何做领券网站肥城网站网站建设
  • 网站数据库配置长沙工程有限公司
  • 常见的微网站平台有哪些方面网站托管费
  • 邯郸建立网站费用怎么用dw做博客网站
  • iH5做网站google地图嵌入网站
  • PHP搭建IDC网站昌平网站建设浩森宇特
  • 有没有网站可以做发虚拟币郴州网站建设哪家好
  • 门户网站内容建设岗位职责企业网站开发计划书
  • 西部数码网站管理助手3.1php做网站技术方案
  • 网站建设中 页面源代码德阳响应式网站建设