-1

refとoutの使用は、値型の受け渡しに限定されません。これらは、参照が渡されるときにも使用できます。refまたはoutが参照を変更すると、参照自体が参照によって渡されます。これにより、メソッドは参照が参照するオブジェクトを変更できます。


この部分はどういう意味ですか?

refまたはoutが参照を変更すると、参照自体が参照によって渡されます。これにより、メソッドは参照が参照するオブジェクトを変更できます。

4

2 に答える 2

2

これは、 を使用refすることで、オブジェクトの内容だけでなく、変数が指すオブジェクトを変更できることを意味します。

refオブジェクトを置き換えるパラメーターを持つメソッドがあるとします。

public static void Change(ref StringBuilder str) {
   str.Append("-end-");
   str = new StringBuilder();
   str.Append("-start-");
}

それを呼び出すと、呼び出す変数が次のように変更されます。

StringBuilder a = new StringBuilder();
StringBuilder b = a; // copy the reference
a.Append("begin");

// variables a and b point to the same object:

Console.WriteLine(a); // "begin"
Console.WriteLine(b); // "begin"

Change(b);

// now the variable b has changed

Console.WriteLine(a); // "begin-end-"
Console.WriteLine(b); // "-start-"
于 2012-09-04T07:23:18.793 に答える