使用する場合、渡されるList<T>.ForEach
オブジェクトは次のとおりです。つまり、j
以下の例では、参照または値によって渡されますか?
MyList.ForEach( j => {} );
私が次のようなことをするとしたら:
MyList.ForEach( j => {
j.someOtherList.Add("value");
});
これは、元のオブジェクトのコピーにj
作用しますか?それとも元のオブジェクトに作用しますか?
使用する場合、渡されるList<T>.ForEach
オブジェクトは次のとおりです。つまり、j
以下の例では、参照または値によって渡されますか?
MyList.ForEach( j => {} );
私が次のようなことをするとしたら:
MyList.ForEach( j => {
j.someOtherList.Add("value");
});
これは、元のオブジェクトのコピーにj
作用しますか?それとも元のオブジェクトに作用しますか?
渡されたオブジェクトはまったくありません- typeの値T
があります。が参照型の場合T
、その値は参照です。値は、通常どおり、値によって渡されます。
T
が と呼ばれるメンバーを持つ参照型であると仮定すると、コードはの値が参照するオブジェクトsomeOtherList
に実際に影響しますが、 の値は単なる参照です。リスト内の値は同じ参照になるため、(たとえば) リストをもう一度反復すると、効果を確認できます。j
j
重要なのは、コードを次のように変更した場合です。
MyList.ForEach( j => {
j = new WhateverYourTypeIs()
});
リストにはまったく影響しません。
特に C# のコンテキストでは、値渡しと参照渡しがどのように機能するかについて少し混乱していると思います。私はあなたを助けるかもしれないトピックに関する記事を持っています.