問題タブ [using-statement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - usingステートメント内で例外がスローされた場合でもDisposeは呼び出されますか?
using
以下の例では、ステートメント内に例外がスローされた場合、接続は閉じられて破棄されますか?
以下のこのコードで確実に機能することはわかっていますが、usingステートメントでどのように機能するのか興味があります。
関連している:
例外がスローされたときにSQL接続が閉じられるようにする適切な方法は何ですか?namespaces - 名前空間宣言の直後に「using 名前空間」を追加することはできますか?
いくつかの型定義を含む小さな名前空間があり、これを使用してコードをよりきれいに見せます。ただし、これらのタイプのいずれかを使用するすべてのファイルに「using namespace ...」行を追加する必要はありません。ファイルに #include を追加する必要があるからです。
MyFile.cpp:
typedefs.h:
名前空間宣言の直後に「using namespace」行を追加してもよろしいですか? そうでない場合、なぜですか?
c# - 乱用言語
少し前に、JavaScript コード生成フレームワークを実装していたときに、特定の C# 設計上の問題に対処する必要がありました。私が思いついた解決策の 1 つは、「using」キーワードをまったく異なる方法で使用することでした。私はそれを階層的なコード構造を構築するための構文シュガーとして使用しました (まあ、元はとにかく 1 つでした)。このようなもの:
Function および While メソッドが IDisposable オブジェクトを返すため、これは機能しています。これは、廃棄時にビルダーに現在のスコープを閉じるように指示します。このようなことは、ハードコーディングする必要があるツリーのような構造に役立ちます。
そのような「ハッキング」は正当化されると思いますか? たとえば、C++ では、テンプレートや演算子のオーバーロードなどの機能の多くが乱用されており、この動作は多くの人によって奨励されていると言えます (たとえば、boost を見てください)。一方で、現代の多くの言語は、そのような悪用を思いとどまらせ、より制限された特定の機能を提供していると言えます。
もちろん、私の例はやや難解ですが、現実的です。では、特定のハッキングと問題全体についてどう思いますか? 同様のジレンマに遭遇したことがありますか? 虐待はどこまで許せる?
c# - returnステートメントは、usingステートメントがデータベースへの接続を閉じるのを防ぐことができますか?
一時テーブルを作成しているときに、一時テーブルがすでに存在することを通知するエラーメッセージが表示されます。一時テーブルはセッションに固有であるため、接続が適切に閉じられていないようです。これは、usingステートメントにあるreturnステートメントと関係があると思います。
私は次のコードを持っています:
この種のコードをいくつかの場所で使用して、同じ名前の一時テーブルを作成します。
残念ながら、次のエラーが発生しますThere is already an object named '#MyTempTable' in the database
。
これで、一時テーブルはセッションに固有であることがわかったので、セッションを閉じると消えるはずです。
これを引き起こす可能性があると私が信じている3つのことがあります...
- connection.Close()を呼び出す必要があります
- usingステートメントの外にreturnステートメントを配置する必要があります
- 戻る前に作成した一時テーブルを削除する必要があります
誰かがそれがどれであるか知っていますか?またはそれが私が考えていなかったものなら?
c# - エラーが発生した場合、using ステートメントはデータベース トランザクションをロールバックしますか?
using ステートメントに IDbTransaction がありますが、using ステートメントで例外がスローされた場合にロールバックされるかどうかはわかりません。using ステートメントが Dispose() の呼び出しを強制することは知っていますが、Rollback() についても同じことが当てはまるかどうかは誰にもわかりませんか?
更新:また、以下のように Commit() を明示的に呼び出す必要がありますか、それとも using ステートメントによって処理されますか?
私のコードは次のようになります。
c# - C#コードでブロックを使用することのポイントは何ですか?
次の構文のコードスニペットがたくさん表示されます
変数を宣言して使用しないのはなぜですか?
このUsing構文は、コードを乱雑にし、読みにくくするようです。そして、その変数がそのスコープでのみ利用可能であることが非常に重要である場合、なぜそのブロックを関数に配置しないのですか?
c# - using ブロックの途中で戻る
何かのようなもの:
returnステートメントの適切な場所ではないと思いますよね?
c# - using ステートメント内で戻った場合、オブジェクトは破棄されますか?
質問のタイトルはかなり明白だと思います。したがって、次のコードを考えると、true が返された場合に SecurityDisabler が破棄されますか?