zoukankan      html  css  js  c++  java
  • C# 中using的几个用途

    参考文献

    http://www.cnblogs.com/morningwang/archive/2008/03/12/1102952.html

    http://msdn.microsoft.com/zh-cn/library/sf0df423.aspx

    在C# 中 using的用途主要有三个

    第一个是   引用命名空间// 这个可以说是最常用的

    using namespace;

    第二个是 为命名空间或类型创建别名。这称为“using 别名指令”。

    using Project = PC.MyCompany.Project;

    Project.MyClass mc = new Project.MyClass();

    第三个是

    当使用 IDisposable 对象时,应在 using 语句中声明和实例化此对象。using   语句按照正确的方式调用对象上的 Dispose 方法,并(在您按照前面所示方式使用它时)会导致在调用 Dispose 时对象自身离开作用域。在 using 块中,对象是只读的并且无法修改或重新赋值。   using 语句确保即使在调用对象上的方法时发生异常Dispose方法也会被调用。可通过将对象放入 try 块中并在finally 块中调用Dispose来达到同样的结果;实际上,这就是编译器转换 using 语句的方式。前面的代码示例在编译时将扩展为以下代码(请注意,使用额外的大括号为对象创建限制范围):

    using (Font font1 = new Font("Arial", 10.0f))
    {
        byte charset = font1.GdiCharSet;
    }
    ----------------------------分割线-------------------------------

    {
      Font font1 = new Font("Arial", 10.0f);
      try
      {
        byte charset = font1.GdiCharSet;
      }
      finally
      {
        if (font1 != null)
          ((IDisposable)font1).Dispose();
      }
    }


    //这段是摘自MSDN 里边的话,换句话说就是  using 块里边的代码  掉在使用using之后,运行超出using 域后,变量(连接)在内存中会被释掉(非托管) 这样有两点好处,第一是  比较安全,即使有异常 也不会导致一直连接数据库等(当时看严峻的代码之后发现的),第二点是 开速释放掉内存之后  ,提高代码效率

    Code
     1using System;
     2using System.IO;
     3
     4/**//// <summary>
     5/// FileDemo 的摘要说明
     6/// </summary>
     7public class FileDemo
     8{
     9    public FileDemo()
    10    {
    11        //
    12        // TODO: 在此处添加构造函数逻辑
    13        //
    14    }
    15    public void MainMethodOne()  //这个是using的用法 隐式的调用Dispose()方法的
    16    {
    17        //创建写入临时文件的字符串
    18        Byte[] bytesToWrite = new Byte[] 12345 };
    19        //创建临时文件
    20        using (FileStream fs = new FileStream("Temp.txt", FileMode.Create))
    21        {
    22            //将字符串写入临时文件
    23            fs.Write(bytesToWrite, 0, bytesToWrite.Length);
    24        }
    25        //删除临时文件
    26        File.Delete("Temp.txt"); //现在它总能释放资源
    27    }
    28
    29    public void MainMethodTwo() //这个是显示的调用Dispose()方法的
    30    {
    31        //创建写入临时文件的字符串
    32        Byte[] bytesToWrite = new Byte[] 12345 };
    33        //创建临时文件
    34        FileStream fs = null;
    35        try
    36        
    37            fs = new FileStream("Temp.txt", FileMode.Create));
    38            //将字符串写入临时文件
    39            fs.Write(bytesToWrite, 0, bytesToWrite.Length);
    40        }
    41        finally
    42        {
    43            //写完后显式关闭文件
    44            if(fs!=null)
    45            {
    46                (IDisposable)fs.Dispose();
    47            }
    48        }
    49        //删除临时文件
    50        File.Delete("Temp.txt"); 
    51    }
    52}
    53在这里using的作用是作为一个临时对象的生存区域;因为.NET是托管代码的机制,而我们有时需要代码要求非托管资源,如文件句柄或SQL连接。在使用一个或多个此类资源完成代码后,using块确保这些资源的释放。在这种情况下我们就需要使用using了。
    using 块可以分获取、使用和释放三个部分。
    1.获取表示创建变量并将其初始化,以便引用系统资源。在using()中
    2.使用表示访问资源并使用资源执行操作。using{}之间的语句代表资源的使用过程。
    3.释放表示针对resourcename中的对象调用Dispose方法。这使该对象可以完全终止其非托管资源“}”块释放“{”块控制的资源。
    基本上就是这些了吧!

  • 相关阅读:
    3(翻译)如何在cocos2d里面使用动画和spritesheet
    Objectivec2.0 每种数据类型定义属性的方法
    cocos2d 入门必备4个基本概念
    如何在Mac上搭建自己的服务器——Nginx
    JN_0001:在微信朋友圈分享时长大于10s的视频
    JN_0002:Win10禁止U盘拷贝文件的方法
    abstract class 和 interface区别
    ref和out
    .Net配置错误页
    Unity3d 物体沿着正七边形轨迹移动
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219833.html
Copyright © 2011-2022 走看看