可能性の重複:
What is the C# Using block and why should I use it?usingステートメントはいつ使用しますか?
私はC#に古いサイトを変換していると私は私が '使用' を使用する必要があるときにはよく分かりません。一般的なガイドラインはありますか?私は利益を知っていますが、私はそれをどのように使うべきか100%確信していません。それは私が「新しい」メソッド/プロパティのたびにですか?
可能性の重複:
What is the C# Using block and why should I use it?usingステートメントはいつ使用しますか?
私はC#に古いサイトを変換していると私は私が '使用' を使用する必要があるときにはよく分かりません。一般的なガイドラインはありますか?私は利益を知っていますが、私はそれをどのように使うべきか100%確信していません。それは私が「新しい」メソッド/プロパティのたびにですか?
オブジェクトを自動的に破棄したい場合によく使用されます。それ以外の場合は、myobj.Dispose()を手動で呼び出す必要があります。
ここで参照documentiationを参照してください:http://msdn.microsoft.com/en-us/library/yh598w02.aspx
を使用するには、あなたがリソースを処分アウトでブロックを終了することができないことを保証することを可能にする便利です。 IDisposable実装者をローカルコードブロックで利用する必要があるときはいつでも利用できます。
MSDN:原則として
、あなたがIDisposableのオブジェクトを使用する場合、あなたが宣言し usingステートメントでそれをインスタンス化する必要があります。 usingステートメントは、という正しい方法でオブジェクトに対して Disposeメソッドを呼び出し、(前述のように を使用する場合)、Disposeが呼び出されるとすぐにオブジェクト自体がスコープ から出るようにします。使用ブロック内では、オブジェクトは 読み取り専用であり、変更または再割当てはできません。
usingステートメントは、オブジェクトのメソッドを呼び出すときに 例外が発生した場合でもDisposeが確実に呼び出されます。 tryブロック内にオブジェクトを入れて同じ結果を得て、 finallyブロックでDisposeを呼び出しても同じ結果が得られます。実際には、これは usingステートメントがコンパイラによってどのように翻訳されるかです。コード例 は、以前の(オブジェクトの限られた範囲を作成するために余分 中括弧に注意)コンパイル時に、次のコードに展開:
例:
using (StreamReader stream = new StreamReader("path"))
{
string line = stream.ReadLine();
}
をクラスがIDisposable
を実装している場合あなたがそれらの使用を終えたときに「処分」される必要があるいくつかの管理されていないリソースが作成されます。例外がスローされた場合は特に、あなたは自動的にを配置呼び出すためにusing
構文を使用することができ、(この場合は、データベース接続を閉じる)resoursesを処分することを忘れないようにするには
SqlConnection awesomeConn = new SqlConnection(connection);
// Do some stuff
awesomeConn.Dispose();
:だからあなたのような何かをするだろうあなたはusingステートメントのスコープの外に行く:すべてのOのために使用して
try
{
SqlConnection awesomeConn = new SqlConnection(connection);
// do some stuff
}
finally
{
awesomeConn.Dispose();
}
用途:
using (SqlConnection awesomeConn = new SqlConnection(connection))
{
// Do some stuff
} // automatically does the .Dispose call as if it was in a finally block
実際には、使用するブロックは同等ですあなたの生涯が現在の実行範囲を超えていない限り、IDisposableを実装するインスタンス化するオブジェクト(つまり、メソッド呼び出し)。その場合、たとえば、使い捨てのメンバー変数がある場合、その包含クラスはIDisposableメンバーとDisposeメンバーをそのDisposeに実装する必要があります。
まず、「使用する」ことが完全に理解されていることを確認してから、はるかに簡単にする必要があります。このmsdnページを参照してください。http://msdn.microsoft.com/en-us/library/yh598w02%28v=vs.100%29.aspx –