C#.netでリソースを解放する2つの方法

908 ワード

Javaでストリームを使用したり、接続を確立したりすると、最後にcloseメソッドが呼び出され、手動でnullに設定されたり、nullに設定されていない場合は、ゴミプロセッサが自動的にnullに設定されますが、C#ではリソースを解放する方法が2つ用意されています.
使用するusing
C#でusingを使用すると、usingの実行が完了すると、disposeメソッドが自動的に呼び出されます.つまり、リソースが解放されます.
    using(SqlConnection con = new SqlConnection(connData)){
        //    ...
    }

try_の使用catch_finally
実際、usingはtry_に相当します.finally、ここではcatchが正しいだけで、これを使うメリットは考えられますが、例えば物事を使うときはcatchの中でロールバックし、usingを使うとだめです.
SqlConnection conn = null;
MysqlTransation tran = null;
try{
    conn = new SqlConnetion(connData);
    con.Open();//    
    tran = conn.BeginConnsaction();
    //...      
    tran.commit();
}catch{
        tran.rollback();//    
}finally{
    //..        
    tran.dispose();
    conn.close()
    conn.dispose();
}