問題タブ [ref]
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」キーワードを使用するのはなぜですか?
オブジェクトをメソッドに渡す場合、ref キーワードを使用する必要があるのはなぜですか? とにかくこれはデフォルトの動作ではありませんか?
例えば:
出力は、オブジェクトが参照として渡されたことを意味する "Bar" です。
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 オブジェクト タイプを持っているため、タイプ セーフではなく「オブジェクト」パラメータが必要です。
latex - Latex: 個々の longtable 行へのハイパーリファレンス
複数のページにまたがるロングテーブルがいくつかあり、pageref と hyperref を使用してこれらの行にリンクしたいと考えています。
しかし、私が何をしようとしても、リンクは常にテーブルの先頭を参照しています。aux ファイルを調べると、すべてのラベルが table.[表の数] に再定義されているようです。
目に見えないダミーの数字をテーブルに入れてみましたが、フロートが多すぎるというエラーが発生します。
また、ラベルをミニページに入れてみましたが、役に立ちませんでした。
ラベルを脚注に入れても機能しません。どういうわけか、ロングテーブルは常にそれらに到達しているようです。
c# - 「ref」キーワードと「out」キーワードの違いは何ですか?
関数によって変更できるように、オブジェクトを渡す必要がある関数を作成しています。違いは何ですか:
と
どちらを使用する必要があり、その理由は?
c# - C# で ref を使用する場合と不要な場合
プログラムのメモリ内状態であるオブジェクトがあり、状態を変更するためにオブジェクトを渡す他のワーカー関数もいくつかあります。私はそれをrefでワーカー関数に渡しています。しかし、私は次の機能に出くわしました。
received_s
との両方remoteEP
が関数から何かを返しているため、混乱します。が必要でremoteEP
必要がないのはなぜですか?ref
received_s
私はACプログラマーでもあるので、頭からポインターを取り出すのに問題があります。
編集: C# のオブジェクトは内部のオブジェクトへのポインターのようです。したがって、オブジェクトを関数に渡すと、ポインターを介してオブジェクトの内容を変更できます。関数に渡されるのはオブジェクトへのポインターだけであるため、オブジェクト自体はコピーされません。ダブルポインターのような関数で新しいオブジェクトを切り替えたり作成したりできるようにする場合は、ref または out を使用します。
c# - refによるオブジェクトの受け渡し
違いは何ですか
本質的に「ref」のポイントは何ですか。オブジェクトは常に参照によるものではありませんか?
c# - C#:参照を期待する関数にnullを渡す方法は?
私は次の機能を持っています:
私はこのように呼びたい:
残念ながら、null
型を必要とし、キャストを必要としないフィールドを渡すことはできませんref Mapping
。これを修正しようとしました。
助言がありますか?
c# - Ref Abuse: クリーンアップする価値はありますか?
refキーワードを広範かつ不必要に使用するコードを継承しました。元の開発者は、 refを使用しない場合、オブジェクトがプリミティブ型のように複製されることを明らかに恐れており、5 万行以上のコードを記述する前に問題を調査しませんでした。
これは、他の悪いコーディング慣行と相まって、表面上はとてつもなく危険な状況を生み出しています。例えば:
住所を変更するために店に足を踏み入れ、まったく別の人として店を出ることを想像できますか?
恐ろしいことですが、実際には、このアプリケーションでのrefの使用は無害に見えます。クリーンアップにかかる膨大な時間を正当化するのに苦労しています。アイデアを売り込むために、次の質問をします。
他にどのように ref を不必要に使用すると破壊的になる可能性がありますか?
特にメンテナンスには力を入れています。例を含むもっともらしい答えが優先されます。
また、クリーンアップは必要ないと主張することもできます。
c# - new によって初期化されたすべての C# 変数が参照であると想定しても安全ですか?
現在、C# ref について学習しています。
new で割り当てられたすべての変数は値ではなく参照であると想定しても安全ですか?
例:
c# - パブリック変数の受け渡しアドレス
次のようなパブリック変数のアドレスを渡そうとすると、次のようになります。
このエラーが発生します:
Register関数は次のようになります。
ビーコンはリストです。パブリック半径のクラスを開催しています。