可能性の重複を使用して参照渡しです:
What’s the difference between a parameter passed by reference vs. passed by value?値渡しの間で異なっており、C#
私は難易度値渡しの違いを理解し、参照渡しを持っています。誰かが違いを説明するC#の例を提供できますか?
可能性の重複を使用して参照渡しです:
What’s the difference between a parameter passed by reference vs. passed by value?値渡しの間で異なっており、C#
私は難易度値渡しの違いを理解し、参照渡しを持っています。誰かが違いを説明するC#の例を提供できますか?
一般に、my article about parameter passingを読んでください。
基本的な考え方は次のとおりです。
引数が参照渡しされている場合は、メソッド内のパラメータ値への変更は、同様の引数に影響します。
someParameter.SomeProperty = "New Value";
のパラメータの値を変更ない:
微妙な部分は、パラメーターが参照型である場合、実行することです。パラメータは単なる参考値であり、上記はパラメータが参照するもの、オブジェクト内のデータだけを変更するものではありません。例については、今
someParameter = new ParameterType();
:ここでは、パラメータの値を変更本当にの例です
簡単な例:参照するか、
class Test
{
static void Main()
{
int i = 10;
PassByRef(ref i);
// Now i is 20
PassByValue(i);
// i is *still* 20
}
static void PassByRef(ref int x)
{
x = 20;
}
static void PassByValue(int x)
{
x = 50;
}
}
より複雑な値でint型を渡します例:参照型の使用
class Test
{
static void Main()
{
StringBuilder builder = new StringBuilder();
PassByRef(ref builder);
// builder now refers to the StringBuilder
// constructed in PassByRef
PassByValueChangeContents(builder);
// builder still refers to the same StringBuilder
// but then contents has changed
PassByValueChangeParameter(builder);
// builder still refers to the same StringBuilder,
// not the new one created in PassByValueChangeParameter
}
static void PassByRef(ref StringBuilder x)
{
x = new StringBuilder("Created in PassByRef");
}
static void PassByValueChangeContents(StringBuilder x)
{
x.Append(" ... and changed in PassByValueChangeContents");
}
static void PassByValueChangeParameter(StringBuilder x)
{
// This new object won't be "seen" by the caller
x = new StringBuilder("Created in PassByValueChangeParameter");
}
}
値を渡すことは、引数のコピーが渡されることを意味します。そのコピーを変更してもオリジナルは変更されません。
参照渡しとは、元の参照が渡され、参照の変更が元のものに影響することを意味します。
これはC#に固有のものではなく、多くの言語で存在します。
-1:リンクしないでください。 http://meta.stackexchange.com/questions/7515/why-is-linking-bad/7519#7519やその他のメタに関する議論を参照してください。 –
ダイジェストがある:あなたがあなたの変数を変更するための関数/メソッドを期待していたときに参照することにより
受け渡しが使用されています。
しないときに値渡し。
重複http://stackoverflow.com/questions/373419/whats-the-difference-between-a-parameter-passed-by-reference-vs-passed-by-value –
これは*重複した*これは具体的にはC#の例を求めていますが、参照される質問にはC#の例はありません。良い*一般的な議論の多くは、確かに、しかし、私は本当にそれも言語固有のものを持つことを痛いとは思わない。 –
@Jon Skeet:既存の質問にC#の構文で答えるのは正しい解決策ではありませんか?おそらく既存の答えを編集する。 – dmckee