タグ付けされた質問 「pass-by-reference」

参照渡しは、引数のマーシャリング戦略であり、メモリ内の変数の位置は、変数の値のコピーではなく関数に渡されますが、関数はソースコードに表示され、変数へのポインターではなく変数自体を受け取ります。


26
変数を参照渡しするにはどうすればよいですか?
Pythonのドキュメントでは、パラメーターが参照によって渡されるのか値によって渡されるのかが不明確であり、次のコードは変更されていない値 'Original'を生成します class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed' 実際の参照で変数を渡すために何かできることはありますか?

30
JavaScriptは参照渡しまたは値渡しの言語ですか?
プリミティブ型(数値、文字列など)は値で渡されますが、オブジェクトは不明です。どちらも値で渡すことができるためです(オブジェクトを保持する変数が実際にオブジェクトへの参照であると考える場合) )および参照渡し(オブジェクトへの変数がオブジェクト自体を保持していると考える場合)。 最後にはそれほど重要ではありませんが、規則を渡す引数を提示する正しい方法は何かを知りたいです。これに関するセマンティクスがどうあるべきかを定義するJavaScript仕様の抜粋はありますか?


12
Javaのメソッドパラメータで「final」というキーワードを使用する必要があるのはなぜですか?
finalキーワードがメソッドパラメータで使用される場合、キーワードが本当に便利な場所を理解できません。 匿名クラス、読みやすさ、意図宣言の使用を除外すると、私にはほとんど価値がないように見えます。 一部のデータを一定に保つことは、見かけほど強力ではありません。 パラメータがプリミティブの場合、パラメータは値としてメソッドに渡され、変更してもスコープ外では効果がないため、効果はありません。 パラメータを参照渡しする場合、参照自体はローカル変数であり、参照がメソッド内から変更された場合、メソッドスコープの外部からの影響はありません。 以下の簡単なテストの例を考えてみましょう。このテストはパスしますが、メソッドは与えられた参照の値を変更しましたが、効果はありません。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }


11
オブジェクトを渡すときに「ref」キーワードを使用するのはなぜですか?
オブジェクトをメソッドに渡す場合、なぜrefキーワードを使用する必要があるのですか?とにかく、これはデフォルトの動作ではありませんか? 例えば: class Program { static void Main(string[] args) { TestRef t = new TestRef(); t.Something = "Foo"; DoSomething(t); Console.WriteLine(t.Something); } static public void DoSomething(TestRef t) { t.Something = "Bar"; } } public class TestRef { public string Something { get; set; } } 出力は "Bar"で、オブジェクトが参照として渡されたことを意味します。

13
JavaScriptで変数を参照渡しする
JavaScriptで変数を参照渡しするにはどうすればよいですか?いくつかの操作を実行する3つの変数があるので、それらをforループに入れて、それぞれに操作を実行したいと思います。 疑似コード: myArray = new Array(var1, var2, var3); for (var x = 0; x < myArray.length; x++){ //do stuff to the array makePretty(myArray[x]); } //now do stuff to the updated vars これを行う最良の方法は何ですか?

8
PHPの配列は、値として、または新しい変数への参照として、および関数に渡されるときにコピーされますか?
1)配列が引数としてメソッドまたは関数に渡される場合、それは参照渡しですか、それとも値渡しですか? 2)配列を変数に割り当てる場合、新しい変数は元の配列への参照ですか、それとも新しいコピーですか? これを行うことについて: $a = array(1,2,3); $b = $a; ある$bへの参照$a?


7
C ++でオブジェクトを関数に渡す方法は?
C ++プログラミングは初めてですが、Javaの経験があります。C ++で関数にオブジェクトを渡す方法に関するガイダンスが必要です。 ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?オブジェクトへの参照を保持する変数のみを渡すため、Javaではそのような問題はありません。 これらの各オプションをどこで使用するかについても説明していただければ幸いです。

13
Rubyは参照渡しですか、値渡しですか?
@user.update_languages(params[:language][:language1], params[:language][:language2], params[:language][:language3]) lang_errors = @user.errors logger.debug "--------------------LANG_ERRORS----------101-------------" + lang_errors.full_messages.inspect if params[:user] @user.state = params[:user][:state] success = success & @user.save end logger.debug "--------------------LANG_ERRORS-------------102----------" + lang_errors.full_messages.inspect if lang_errors.full_messages.empty? @userオブジェクトはメソッドのlang_errors変数にエラーを追加しますupdate_lanugages。@userオブジェクトの保存を実行すると、lang_errors変数に最初に格納されたエラーが失われます。 私がやろうとしていることは、もっとハックすることです(それは機能していないようです)。なぜ変数値が洗い流されるのか理解したいのですが。参照渡しを理解しているので、値が洗い流されることなくその変数に保持される方法を知りたいのですが。

7
C#での参照または値によるオブジェクトの受け渡し
C#では、非プリミティブ変数は参照によって渡され、プリミティブ値は値によって渡されると常に思っていました。 したがって、メソッドにプリミティブ以外のオブジェクトを渡す場合、メソッド内のオブジェクトに対して行われたことは、渡されるオブジェクトに影響します。(C#101のもの) しかし、System.Drawing.Imageオブジェクトを渡したときに、これは当てはまらないように見えました。system.drawing.imageオブジェクトを別のメソッドに渡し、そのオブジェクトに画像をロードした場合、そのメソッドをスコープ外にして呼び出し元のメソッドに戻ると、その画像は元のオブジェクトにロードされませんか? どうしてこれなの?

7
C ++で参照渡しよりもポインタ渡しの利点はありますか?
C ++で参照渡しよりポインタ渡しの利点は何ですか? 最近、参照で渡すのではなく、ポインタで関数の引数を渡すことを選択した多くの例を見てきました。これを行うメリットはありますか? 例: func(SPRITE *x); の呼び出しで func(&mySprite); 対 func(SPRITE &x); の呼び出しで func(mySprite);

13
C#で参照によりプロパティを渡す
OverаэтотвопросестьответынаStack Overflowнарусском:Передачасвойствасметодсмодификаторомref out 私は次のことをやろうとしています: GetString( inputString, ref Client.WorkPhone) private void GetString(string inValue, ref string outValue) { if (!string.IsNullOrEmpty(inValue)) { outValue = inValue; } } これは私にコンパイルエラーを与えています。私が達成しようとしていることはかなり明確だと思います。基本的にGetString、入力文字列の内容をのWorkPhoneプロパティにコピーしますClient。 プロパティを参照で渡すことは可能ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.