問題タブ [using]
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# - IDisposableに依存しないUsingパターンはありますか?
コードが呼び出されている時間を教えてくれる内部メッセージングシステムを作成したいと思っています。SystemMessageクラスにIDisposableを実装させるために、使いやすさを考えていました。
SystemMessageのコンストラクター中にタイムスタンプを設定し、Disposeが呼び出された場合、期間を把握できました。
問題は、オブジェクトをGC化したくないということです。MessageCollectionの一部として残しておいてほしい。
IDisposableの目的の機能を踏まずに、Usingステートメントの使いやすさを提供できるC#の別の構造はありますか?
asp.net - グーグルデータを使用するためのウェブアプリケーションからグーグルアカウントサービスに認証する方法
ユーザー名とパスワードを使用して、ウェブアプリケーションからグーグルリーダーのユーザーフィードアイテムなどのグーグルサービスにアクセスする方法を教えてください。ユーザーに認証をさせたくありません。ASP.netのソリューションが必要です。
Pythonで利用可能なソリューションはすでにhttp://dalelane.co.uk/blog/?p=303にあります。
しかし、私はpythonを知りません。
sql - MySQL の USING に相当する SQL Server
MySQL では、同じ名前の異なるテーブルの列を結合するときに、結合でキーワード USING を使用できます。たとえば、次のクエリは同じ結果を返します。
SQL Server に同等のショートカットはありますか?
c# - コードをusingステートメントにリファクタリングする
私は多くのメソッドを備えたdal層を持っており、それらはすべてストアドプロシージャを呼び出し、一部のリターンリスト(を使用してSqlDataReader
)を呼び出し、その他は特定の値のみを呼び出します。
を作成するヘルパーメソッドがありますSqlCommand
:
これで、私の平均的な(過度に単純化された)メソッド本体は次のようになります。
これをリファクタリングして、ヘルパー関数を失わないようにする方法はありますか(それ以外の場合はかなりの反復作業を行います)、それでも使用できますusing
か?
c# - Stream.Dispose は常に Stream.Close (および Stream.Flush) を呼び出しますか
次のような状況がある場合:
Close が提供されていても、Closeを呼び出しMySW.Dispose()
てスキップすることはできますか? 期待どおりに動作しないストリームの実装はありますか (CryptoStream など)?
そうでない場合、次のコードは単に悪いコードです。
datatable - DataSetとDataTableをDispose()する必要がありますか?
DataSetとDataTableはどちらもIDisposableを実装しているため、従来のベストプラクティスでは、Dispose()メソッドを呼び出す必要があります。
ただし、これまで読んだことから、DataSetとDataTableには実際には管理されていないリソースがないため、Dispose()は実際には多くのことを行いません。
さらに、using(DataSet myDataSet...)
DataSetにはDataTablesのコレクションがあるため、使用することはできません。
したがって、安全のために、myDataSet.Tablesを反復処理し、各DataTablesを破棄してから、DataSetを破棄する必要があります。
それで、すべてのDataSetとDataTableでDispose()を呼び出すのは面倒な価値がありますか?
補遺:
DataSetを破棄する必要があるとお考えの方へ:一般に、破棄のパターンはusing
orを使用するtry..finally
ことです。これは、Dispose()が呼び出されることを保証するためです。
ただし、これはコレクションにとって醜いものになります。たとえば、Dispose()の呼び出しの1つが例外をスローした場合はどうしますか?次の要素を処分し続けることができるように、それを飲み込みますか(これは「悪い」です)?
または、myDataSet.Dispose()を呼び出すだけで、myDataSet.TablesのDataTablesを破棄することを忘れることをお勧めしますか?
c# - .Net 1.1 の FileStream に IDisposable を実装する方法
これはくだらない質問のように思えるかもしれませんが、たとえそれが using ブロックにあるとしても、FileStream で Close() を呼び出す必要があると誰かが主張しているのを聞いたので、これを見ていました (そして、Close() が呼び出されているコードがあります)。ブロックの最後にある)。
Close() が Dispose() を呼び出すことを意図していることは知っていますが、これは .Net 1.1 コードであり、私の経験の大部分は 2.0 を使用しているため、さらに詳しく調べると思いました。
私が驚いたことの 1 つは、FileStream の MSDN ドキュメントには、.Net 2.0 の Dispose() と Dispose(bool) があり、.Net 1.1 の Dispose(bool) しかないことです。
これは見落としかもしれないと思ったので、Reflector を使用してアセンブリを調べました。そこにも Dispose(bool) が表示されますが、Dispose() は表示されません。
これは正しいです?もしそうなら、ここでの話は何ですか?FileStream は using ブロックで動作します。これは、私の知る限り、Dispose() のみを宣言する IDisposable を実装する必要があることを意味すると考えました。
コンパイラの魔法が起こっているのでしょうか、それとも Dispose() の非表示の実装がどこかにありませんか (おそらく、 Dispose(true) または Dispose(false) を呼び出しますか?)
最後に (しゃれは意図していません)、ブロックを使用して FileStream をスコープすると、.Net 1.1 のスコープ出口でストリームが閉じられることを確認できますか?
[編集]
明確にするために、これは C# コードです。VB.Net は .Net 2.0 まで using ステートメントを取得できなかったことを理解していますが、私の理解では、C# には 1.1 が含まれていました (そして、ここにある私の 1.1 コードにはそれが含まれており、コンパイルされます)。
c# - ステートメント展開を使用した興味深い C#
これを見つけるためにildasmを実行しました:
これと同等の IL コードを生成します。
問題は、なぜ最終的に null をチェックするのかということです。finally ブロックは、try ブロックが実行された場合にのみ実行され、try ブロックは、Simple コンストラクターが成功した場合 (つまり、例外がスローされない場合) にのみ実行されます。この場合、simp は非 null になります。(Simple コンストラクターと try ブロックの先頭の間に何らかのステップが介在するのではないかという懸念がある場合、それは本当に問題になります。例外がスローされて、finally ブロックの実行がまったく妨げられる可能性があるからです。)それで、なぜ一体?
using ステートメントが try-finally よりも優れているかどうかの議論は (お願いします) 脇に置いて、try-finally ブロックを次のように記述します。
c# - 「using」ステートメントでのさまざまな型の使用 (C#)
C#ステートメントは try/finally{dispose} の単なる構文糖衣であるため、同じ型の場合にのみusing
複数のオブジェクトを受け入れるのはなぜですか?
必要なのはIDisposableだけなので、わかりません。それらのすべてが IDisposable を実装していれば問題ないはずですが、そうではありません。
具体的には、私は書くことに慣れています
私は次のように圧縮します:
そして、さらに次のようにコンパクトにしたいと思います。
しかし、私はできません。おそらく、次のように書くこともできます。
私が処分する必要があるのはコマンドではなく接続だけなので、それは重要ではありません。
c# - この C# の "using" ディレクティブは何ですか?
コード例でこの C# using ステートメントを見ました。
それは一体何ですか?