zoukankan      html  css  js  c++  java
  • 【C#】using用法

    昨天的“【windows phone】simple note”中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。

    例:

    public void ExecuteCommand( string connString,  string commandString )  
    {
    SqlConnection myConnection = new SqlConnection( connString );
    SqlCommand mySqlCommand = new SqlCommand( commandString,
    myConnection );

    myConnection.Open();
    mySqlCommand.ExecuteNonQuery();
    }

    这个例子中的两个可处理对象没有被恰当的释放:SqlConnection和SqlCommand。两个对象同时保存在内存里直到析构函数被调用。

    解决这个问题的方法就是在使用完命令和链接后就调用它们的Dispose:

    public void ExecuteCommand( string connString,  string commandString )  
    {
    SqlConnection myConnection = new SqlConnection( connString );
    SqlCommand mySqlCommand = new SqlCommand( commandString,
    myConnection );

    myConnection.Open();
    mySqlCommand.ExecuteNonQuery();

    mySqlCommand.Dispose( );
    myConnection.Dispose( );
    }

    使用using语句也可以很好的实现此功能,而且代码很清晰:

    public void ExecuteCommand( string connString,  string commandString )  
    {
    using ( SqlConnection myConnection = new SqlConnection( connString ))
    {
    using ( SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection ))
    {
    myConnection.Open();
    mySqlCommand.ExecuteNonQuery();
    }
    }
    }

    当你在一个函数内使用一个可处理对象时,using语句是最简单的方法来保证这个对象被恰当的处理掉。当这些对象被分配时,会被编译器放到一个try/finally块中。

    SqlConnection myConnection = null;  

    // Example Using clause:
    using ( myConnection = new SqlConnection( connString ))
    {
    myConnection.Open();
    }


    // example Try / Catch block:
    try {
    myConnection = new SqlConnection( connString );
    myConnection.Open();
    }
    finally {
    myConnection.Dispose( );
    }

    有时候使用try/finally块的时候会发现如果发生错误,程序不会报错。本人感觉还是使用using语句比较好。





  • 相关阅读:
    Blazor Webassembly本地化的实现
    一分钟搞清C++中的指向常量的指针和常量型指针
    如何使新Edge和旧Edge并行使用
    Build 2020上公布的C# 9.0 新特性
    C# 8.0 新特性之二:接口默认实现
    如何用代码来快速批量下载人教社中小学电子教材
    三大常用数据库事务详解之三:事务运行模式
    三大常用关系型数据库事务详解之二:基本事务命令
    三大关系型数据库事务详解之一:基本概念
    自然语言处理学习笔记之一:概要
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/2417342.html
Copyright © 2011-2022 走看看