タグ付けされた質問 「using-statement」



9
try / catch +使用、正しい構文
どれ: using (var myObject = new MyClass()) { try { // something here... } catch(Exception ex) { // Handle exception } } または try { using (var myObject = new MyClass()) { // something here... } } catch(Exception ex) { // Handle exception }

5
ステートメントの使用が終了する前に戻るとどうなりますか?破棄は呼び出されますか?
私は次のコードを持っています using(MemoryStream ms = new MemoryStream()) { //code return 0; } dispose()この方法は、の終了時に呼び出されるusing文のかっこ}右?I以来 returnの終了前にusing声明、うMemoryStreamオブジェクトが適切に配置されても?そこで何が起こるの?


5
複数のリソースで「使用」すると、リソースリークが発生する可能性がありますか?
C#では、次のことができます(MSDNの例)。 using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. } 場合はどうなるのfont4 = new Fontスロー?font3はリソースをリークし、破棄されません。 これは本当ですか?(font4は破棄されません) これはusing(... , ...)、ネストされた使用を優先して完全に回避する必要があるという意味ですか?

3
usingステートメント内で例外がスローされた場合でも、Disposeは呼び出されますか?
以下の例では、接続がusingステートメント内にある場合、例外がスローされると接続が閉じて破棄されますか? using (var conn = new SqlConnection("...")) { conn.Open(); // stuff happens here and exception is thrown... } 以下のこのコードがそれを確実にすることを知っていますが、ステートメントを使用してそれがどのように行われるのか知りたいです。 var conn; try { conn = new SqlConnection("..."); conn.Open(); // stuff happens here and exception is thrown... } // catch it or let it bubble up finally { conn.Dispose(); } 関連: …

1
ステートメントを使用し、キーワードがC#で適切に再生されるのを待つ
インスタンスasyncを返すメソッドを呼び出す状況がありIDisposableます。例えば: HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")); さて、以前asyncはシーンでしたが、IDisposableインスタンスを操作する場合、「応答」変数を使用したこの呼び出しとコードは、usingステートメントでラップされます。 私の質問は、asyncキーワードが混在してスローされたときに、それがまだ正しいアプローチかどうかです。コードがコンパイルされても、usingステートメントは以下の両方の例で期待どおりに機能しますか? 例1 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { // Do something with the response return true; } 例2 using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"))) { await this.responseLogger.LogResponseAsync(response); return true; }

3
エラーが発生した場合、usingステートメントはデータベーストランザクションをロールバックしますか?
usingステートメントにIDbTransactionがありますが、usingステートメントで例外がスローされた場合にロールバックされるかどうかはわかりません。usingステートメントがDispose()の呼び出しを強制することは知っていますが、Rollback()にも同じことが当てはまるかどうか誰かが知っていますか? 更新:また、以下のようにCommit()を明示的に呼び出す必要がありますか、それともusingステートメントによって処理されますか? 私のコードは次のようになります。 using Microsoft.Practices.EnterpriseLibrary.Data; ... using(IDbConnection connection = DatabaseInstance.CreateConnection()) { connection.Open(); using(IDbTransaction transaction = connection.BeginTransaction()) { //Attempt to do stuff in the database //potentially throw an exception transaction.Commit(); } }

15
'using'ステートメントvs'tryfinally '
読み取り/書き込みロックを使用するプロパティがたくさんあります。try finallyまたはusing句を使用して実装できます。 で、のtry finally前にロックを取得しtry、で解放しますfinally。このusing句では、コンストラクターでロックを取得し、Disposeメソッドで解放するクラスを作成します。 私は多くの場所で読み取り/書き込みロックを使用しているので、より簡潔な方法を探していました try finally。なぜある方法が推奨されないのか、またはある方法が別の方法よりも優れているのかについて、いくつかのアイデアを聞くことに興味があります。 方法1(try finally): static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock(); private DateTime dtMyDateTime_m public DateTime MyDateTime { get { rwlMyLock_m .AcquireReaderLock(0); try { return dtMyDateTime_m } finally { rwlMyLock_m .ReleaseReaderLock(); } } set { rwlMyLock_m .AcquireWriterLock(0); try { dtMyDateTime_m = value; } finally { rwlMyLock_m …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.