問題タブ [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.

0 投票する
4 に答える
514 参照

c# - `using(...)` を効果的に使用しても役に立たない、または非効率的ですか?

次のコードは、using(...)機能/目的を無関係にしますか?
GC のパフォーマンスが低下する可能性はありますか?

出力: SuperDisposable

この機能についての私の理解は、 のusing(...)破棄を直ちに強制することDisposableClassです。ただし、コード ブロック内では、クラスをディクショナリ コレクションに追加しています。私の理解では、クラスは本質的に参照型です。したがって、私の実験は、この方法でコレクションに追加された使い捨てオブジェクトに何が起こるかを確認することでした。

この場合DisposableClass、まだかなり生きています。クラスは参照型であるため、コレクションは単にこの型を参照するのではなく、実際にクラスを値として保持していると仮定しました。しかし、それも意味がありませんでした。

それで、実際に何が起こっているのですか?

編集:いくつかの回答で示唆されているように、オブジェクトが死んでいないことを証明するために出力を含むコードを修正しました。

2番目の編集:さらにコードを調べたときに、これがどうなるかは次のとおりです。

メソッドに渡されるコード ( にブレークポイントがありましたprivate void Dispose(bool dispose)) をステップ実行falseすると、ここでリソースを適切に破棄することが不可欠になります。とにかく、クラスはまだ生きていますが、間違いなく例外を設定しています。答えは私をより興味深くしました...

0 投票する
5 に答える
19604 参照

linq - LINQ-SQLでは、DataContextのラップはusingステートメントです-pros cons

パフォーマンス、メモリ使用量、コーディングの容易さ、正しいことなどの要素の観点から、誰かがデータコンテキストをusingステートメントでラップするかLINQ-SQLでラップしないかについて、賛否両論を提案できますか?

更新ある特定のアプリケーションで、ブロックを使用する際にDataContextをラップせずに、ライブオブジェクトがGC用にリリースされなかったため、メモリ使用量が増加し続けることを経験しました。以下の例のように、qオブジェクトのリストへの参照を保持し、qのエンティティにアクセスすると、GC用にリリースされていないオブジェクトグラフを作成します。

を使用したDataContext

使用せずに存続するDataContext

ありがとう。

0 投票する
6 に答える
1164 参照

c# - C#: ブロックの使用: オブジェクトの再初期化

「using」ブロック内での再初期化は、常に避けるべき悪い考えです。それでも私はこれを尋ねるつもりです:

「using」呼び出しが、最後の参照または再初期化ではなく、元の値で破棄されるのはなぜですか (try finally ブロックが使用されている場合に発生します)。

上記のコードでは、dispose は元の参照で呼び出され、新しい参照では呼び出されません。これは、dispose メソッドでコンソールに何かを出力することで簡単に確認できます。

ただし、try{} finally コードでは、最後の参照破棄メソッドが呼び出されます。

MSDN : using ステートメントにより、オブジェクトのメソッドを呼び出しているときに例外が発生した場合でも Dispose が呼び出されることが保証されます。

基本的に「使用する」は次のように変換されます。

0 投票する
3 に答える
160 参照

c# - usingブロックは、GCの参照を作成および維持しますか?

これは主に好奇心のためです。この構成で考えられるほとんどすべてのユースケースを実装するためのより良い方法があります(少なくとも、C#や他の言語では、私は定期的に使用しています)が、最近、スコープ付きミューテックスをここで見ました。クールなコンセプト。

私の質問は、usingステートメントは、それが作用しているオブジェクトへの参照を維持しますか(つまり、GCが実行されないようにしますか)?

たとえば、私が行う場合:

ScopedMutexオブジェクトは、usingブロックの最後までその存在を維持しますか、それともGCを実行して、ブロックの途中で破棄しますか?

0 投票する
5 に答える
1086 参照

c# - using ステートメントの使用法

重複の可能性:
C# で IDisposable に対してステートメントを使用するか、Dispose() を呼び出すと、どちらが優れていますか?
C# で "using" ブロックを使用する必要があるのはいつですか?
using if ステートメントを使用していますか?

using適切に、ステートメントをどのように使用しますか? チュートリアルを開いていますが、理解できません。そして、私は実装するための複数の異なる方法を見ることができます. どちらが正しい方法または好ましい方法ですか?

0 投票する
5 に答える
24963 参照

c# - using() ステートメント内から戻ることの副作用はありますか?

次のように、DataContext を取得する using ステートメント内からメソッド値を返すと、常に正常に動作するようです。

しかし、using ステートメントの前にトランザクションを定義し、括弧内の値を取得し、括弧のに戻るなど、using ブラケットから抜け出す前に何かを閉じる必要があると常に感じています。

括弧を使用して変数を定義して返すことは、より良い方法であるか、何らかの方法でリソースを節約しますか?

0 投票する
3 に答える
721 参照

c# - 別のファイルのC#名前空間/クラスを表示するとエラーが発生します

「HOD」と「Controllers」の2つのプロジェクトがあります。Controllersは、名前空間が「Controllers」のクラスライブラリです。HODのコードファイルで、「Controllersを使用して」Controllers名前空間を参照しようとしています。HODプロジェクトの参照をControllersに追加しましたが、VS2008のreferencesフォルダーに表示されます。

プロジェクトをビルドするとエラーは発生しませんが、ページを表示すると「タイプまたは名前空間名「Controllers」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)」というエラーが表示されます。 。

Controllers.cs(クラスライブラリ、Controllersプロジェクト)

index.aspx.cs(HODプロジェクト)

プロジェクトはWebサーバーにあり、Controllers.dllはHOD.dllと同じbinフォルダーにあります。よろしくお願いします!

編集:.slnの内容

コンパイラ出力

------再構築すべて開始:プロジェクト:コントローラー、構成:任意のCPUのデバッグ------ C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ Csc.exe / noconfig / nowarn:1701、 1702 / errorreport:prompt / warn:4 / define:DEBUG; TRACE / reference: "C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll" / reference: "C :\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Data.DataSetExtensions.dll "/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll / reference: "C: \ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Xml.Linq.dll "/ debug + / debug:full / filealign:512 / optimize- / out:obj \ Debug \ Controllers.dll /目標:ライブラリClass1.csProperties\ AssemblyInfo.cs

コンパイルが完了しました-0エラー、0警告コントローラー-> Y:\ HOD2 \ Controllers \ bin \ Debug \ Controllers.dll ------再構築すべて開始:プロジェクト:HOD、構成:任意のCPUのデバッグ----- --C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ Csc.exe / noconfig / nowarn:1701,1702 / errorreport:prompt / warn:4 / define:DEBUG; TRACE / reference:Y:\ HOD2 \ Controllers \ bin \ Debug \ Controllers.dll / reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Configuration.dll / reference: "C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll "/ reference:" C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Data.DataSetExtensions.dll "/ reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Data.dll / reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.dll / reference:C:\ Windows\Microsoft。NET \ Framework \ v2.0.50727 \ System.Drawing.dll / reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.EnterpriseServices.dll / reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Web.dll / reference: "C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Web.Extensions.Design.dll" / reference: "C:\プログラムファイル(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Web.Extensions.dll "/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Mobile.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll / reference:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Xml.dll / reference :"C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Xml.Linq.dll" / debug + / debug:full /optimize-/out:obj\Debug\HOD.dll /目標:ライブラリindex.aspx.csindex.aspx.designer.csProperties \ AssemblyInfo.cs

コンパイル完了-0エラー、0警告HOD-> Y:\ HOD2 \ bin \ HOD.dll ==========すべて再構築:2成功、0失敗、0スキップ======= ===

0 投票する
8 に答える
307 参照

c# - 「using」キーワードを使用すると廃棄されるもの

例を見てみましょう:

SomeOtherObjectIDisposableも実装します。SomeObjectが破棄されるときに、SomeOtherObjectも破棄されますか?SomeOtherObjectはどうなりますか?(SomeOtherObjectの破棄は、SomeObjectのDisposeメソッドには実装されていません)

0 投票する
9 に答える
21783 参照

scala - 「使う」機能

「using」関数を次のように定義しました。

私はそれを次のように使用できます:

今、「using」関数を定義して任意の数のパラメーターを取り、それらに個別にアクセスできるようにする方法に興味があります。

0 投票する
2 に答える
419 参照

java - 秘密鍵の使用方法

私の検索で、myrsakey.pemという秘密鍵を生成できることがわかりました。この鍵が使用されるこの鍵の目的は何ですか。助けてください。

よろしくシャルン。