using(...)文はtry {} finally {}の構文砂糖です。ステートメントとtry-catch()を使用する - 最後に繰り返しますか?
しかし、私はその後、以下のようにusingステートメントを使用している場合:
using (FileStream fs = File.Open(path))
{
}
は今、私はそれが原因に失敗することができるという点で、このファイルを開くと原因(これはかなりリスクの高いコードであることができると例外をキャッチしたいです環境)、しかし、私はtry-catchを書く場合は繰り返しではないでしょうか?コードがILにコンパイルされると、コードがJITされたときに反復が削除されると思いますか?
しかし、ファイルを開くことで例外が発生する可能性があります(使用する文の範囲外でtry-catchを囲む必要があります)。また、使用するブロック内で何を行うにしても例外があります。ブロック内のtry-catch。
これは、CLRがおそらく内部で何を行うかについて、私は多くの繰り返しを追加しているようです。 CLRはcatch節を追加しますか?
私の同僚は、usingステートメントが面倒だと主張しました(しかし、これは、私が非常に素早く変更する必要があるため、ハードコーディングしているために1行が少し長くなっていたためです。ベース)。同僚はusingステートメントを使用しませんが、usingステートメントとtry-finally/try-catch-finallyの間に機能的な違いはありますか?私は、WCFサービスが、最終的に値を返すことについてのよく知られていないコーナーケースを持っているこのケースを見ました。解決策はチェックブロックを使用することでした。これはC#のようなものですか?
さらに、管理対象外のリソースのIDisposale所有者を実装するすべてのタイプはありますか?私の友人との討論は答えがノーだと指摘した。 (私はこのフォーラムの使用セクションのいくつかのスレッドも読んでおり、そこには非常に良い知識があります)。
最後にサポートを使用していますか?匿名のスコープブロックを使用して、どこで使用したのですか?私はこれについてもっと知りたいです。したがって、私が使用しているブロック(FileSream.Open()など)でファイルを開くと、この例外はバブルアップします。 usingステートメントがtry/finallyを実装している場合、catch/catchだけをtry/catchでラップする必要があります。 – dotnetdev