問題タブ [out]
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# - オブジェクト型に「ref」および/または「out」を使用する
私は .Net 1.1 アプリケーションに行き詰まっており (つまり、今のところ 2.0 のジェネリック機能を使用できません)、コードの一部を最適化しようとしていました。リリースする必要があるランタイム呼び出し可能なラッパーを多く扱うため、すべての参照がリリースされるまでループするユーティリティ メソッドを作成することになりました。メソッドのシグネチャは次のとおりです。
すべての comObjects を解放した後、GC.Collect と GC.WaitForPendingFinalizers を呼び出します (質問しないでください - Office の相互運用を扱っている人なら誰でも知っています)。
そして ... いつものように、まれなケースに遭遇します。GC.Collect 呼び出しの前に、対応するマネージド参照を null に割り当てないと、適切にクリーンアップされません。
したがって、私のコードは次のようになります。
xxx=null がたくさんあるので、これを util メソッドに入れることにしましたが、参照渡しと参照パラメーターの受け渡しには違いがあるため、明らかにメソッドを次のように変更する必要がありました。
呼び出し元を次のように編集します。
これは、「'out MyComClass' から 'out object' に変換できません」というメッセージで失敗します。
なぜそれが問題になるのか (つまり、オブジェクトから MyComClass へのリバース キャストは暗黙的ではなく、メソッドが何を行うか保証されていない) を考えることはできますが、回避策があるかどうかは疑問に思っていました。私の何百ものヌルの割り当てで。
注: 私はさまざまな COM オブジェクト タイプを持っているため、タイプ セーフではなく「オブジェクト」パラメータが必要です。
c# - 「ref」キーワードと「out」キーワードの違いは何ですか?
関数によって変更できるように、オブジェクトを渡す必要がある関数を作成しています。違いは何ですか:
と
どちらを使用する必要があり、その理由は?
c# - out 引数を明示的に破棄する方法は?
私は電話をかけています:
しかし、私は実際にはメッセージを気にしません。それが気にしない入力パラメーターである場合は、null を渡すだけです。それが私が気にしないリターンなら、私はそれをそのままにしておくだろう.
out で同様のことを行う方法はありますか、それとも無視する変数を宣言する必要がありますか?
c# - C#4.0では、メソッドのoutパラメーターを共変にできないのはなぜですか?
この魔法のインターフェースを考えると:
そして、このクラス階層:
これでコンパイルできます:
これは素晴らしいことです。しかし、インターフェースを別の方法で定義するとどうなりますか?
別のブール値の戻り値を使用して、帽子が空である可能性があることを示しています(以前のバージョンでは、空の帽子からnullのウサギが返された可能性があります)。しかし、私はまだウサギを出力しているだけなので、以前のバージョンと論理的に異なることは何もしていません。
CTPのC#4.0コンパイラでは、インターフェイス定義にエラーが発生します。「out」メソッドパラメータが不変型である必要があります。これが許可されない理由はありますか、それとも将来のバージョンで対処される可能性がありますか?
c# - C#出力パラメーターのパフォーマンス
C#の出力パラメーターには、知っておくべきパフォーマンスへの影響がありますか?(例外のように)
out
つまり、1秒間に数百万回実行されるループ内のパラメーターを持つメソッドを用意するのは良い考えですか?
私はそれが醜いことを知っていますが、私はそれらを使用しているのと同じ方法でそれを使用しています-いくつかの検証が成功したかどうかを示すためにをInt32.TryParse
返し、成功した場合はいくつかの追加データを含むパラメーターを持っています。bool
out
c# - イテレータ メソッドが 'ref' または 'out' パラメータをとれないのはなぜですか?
私は今日これを試しました:
この背後にある理論的根拠は何ですか?
c# - Moqでのout/refパラメータの割り当て
Moq(3.0+)を使用してout
/パラメーターを割り当てることは可能ですか?ref
を使用することを検討しましたが、ジェネリックに基づいているため、refパラメーターをサポートしていませんCallback()
。また、コールバックでそれを行うことはできますが、パラメーターの入力にAction<>
制約( )を設定することもできます。It.Is
ref
Rhino Mocksがこの機能をサポートしていることは知っていますが、私が取り組んでいるプロジェクトはすでにMoqを使用しています。
c# - どのような場合に out パラメータを使用する必要がありますか?
出力パラメーターをいつ使用する必要があるのか わかりません。複数の型を返す必要がある場合は、結果を新しい型に個人的にラップします。
私はこのような方法を見てきました、
それが実際に理にかなっている場合はありますか?
どうですかTryParse
、ParseResult
型を返さないのはなぜですか? または新しいフレームワークでは、null 許容型を返しますか?
c# - 呼び出し元 (C#) での「out」キーワードの目的は何ですか?
C# 関数に出力パラメーターがある場合は、次のように明確にします。
これは、関数が呼び出されたときにパラメーターを初期化する必要がないことを示しています。ただし、この関数を呼び出すときは、out キーワードを繰り返す必要があります。
これは何に良いのか気になります。関数仕様の一部を繰り返す必要があるのはなぜですか? 誰か知っていますか?
c++ - cout 出力をインデントするにはどうすればよいですか?
二分木を印刷しようとしています
レベル「-」文字で各値をインデントするために、出力をインデントするにはどうすればよいですか。