2009-08-10 14 views
-1

を作成するときに使用して使用している場合、私は人々がどのようにそれがこの1ASP.NET:私はASP.NETでのオブジェクト

SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString) 
// Do the datatbase transactions 

異なるんこの

using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)) 
{ 

    // Do the datatbase transactions 

} 

のようにコーディング見てきたどのような利点1つを他のものより上で使用することでパフォーマンス/スピードの改善はありますか?

答えて

2

ためのショートカットです。 :)

using (var foo = new Foo()) 
    foo.bar(); 

はに等しい:キーワードを使用

Foo foo = new Foo(); 
try 
    { 
     foo.bar(); 
    } 
    finally 
    { 
    if (foo != null) 
     ((IDisposable)foo).Dispose(); 
    } 

(それはIDisposableインターを実装しなければならない)、オブジェクトが配置されることを保証します。
外部リソース(データベース接続、ファイルストリームなど)を扱うときに便利です。エラーが発生しても解放されます。

3

usingステートメントは、リソースを使用するオブジェクト が にそれらを解放すべきとき プログラマが指定することができます。 ステートメントを使用するオブジェクトには、 IDisposableインターフェイスを実装する必要があります。このインターフェイス は、 がオブジェクトのリソースを解放するDisposeメソッドを提供します。

usingステートメントの終わりが ときに使用した文が のいずれかに終了することができますが到達したか、例外がスローされた場合 とコントロールは、ステートメントの終了前に文ブロック を残します。

良い記事はここに一般的に

Understanding the 'using' statement in C#

0

を見つけることができます、あなたはIDisposableを実装する任意のオブジェクトのためのusing構文を使用する必要があります - たとえば、SqlConnectionため。

usingステートメントは、例外が発生した場合でも(ほぼ)すべての状況でオブジェクトがブロックの最後に正しく配置されることを保証します。

直接速度とパフォーマンスの違いはありませんが、IDisposableオブジェクト(通常はusingを使用)を処分しないと、重要なリソースが整理されていないため問題が発生する可能性がありますアップ。

usingを使用すると、ほとんどの場合、正しい方法で作業を行うことができます。 usingを使用することは、あなたがやっていることとその理由を絶対に確信していない限り、通常は悪い考えです。

1

使用方法:オブジェクトの外側にスコープを定義します。

オブジェクトを作成してから処分するのではなく、構文だけです。 MSDN

-1

使用してステートメントの

詳細は自動的に使用してブロックが終了したら、それは、オブジェクトをオフに処分されますすなわち、最終的に呼び出します。コンストラクト内寿命を有する用いて構築で作成

SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString) 
// Do the datatbase transactions 
    myConnection.Close(); 
    myConnection.Dispose() 
+1

try/finallyでスローして、何が起きたとしてもCloseとDisposeが呼び出されるようにします。 –

+0

閉じるも呼び出されません。 – meandmycode

0

オブジェクト(中括弧{}):

using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)) 
{ 
    // Do the datatbase transactions 
} 

は、と等価です。また、IDisposableインターフェイスを実装しているメンバーだけが作成できることに気づいた場合。つまり、使用しているコンストラクトコードの直後に、コンパイラは作成したオブジェクトのdisposeメソッドを自動的に呼び出します。ガベージコレクションに役立ちます。

SqlConnectionオブジェクトの場合と同様に、disposeを呼び出す必要があります。それ以外の場合は、古い接続プールを再利用するのではなく、別の受信要求に新しい接続を割り当てます。接続プーリングは、データベースへの接続を取得するのにかかる時間をリソースを最小限に抑えるための固有の方法です。

は参照してください:ステートメントを使用して IDisposableを

0

プーリング 接続がそれはただのショートカットです

try 
{ 
    /* do the work here with obj */ 

} 
finally 
{ 
    if (obj != null) 
     obj.Dispose(); 
} 
関連する問題