|
■No76089 (ATM さん) に返信 > という解説がありました。 それは、どこにあった解説でしょうか?
前後の文章まで読まないと、別の意味に解釈されてしまう可能性も ありますので、出典を明らかにしていただけると助かります。
> 参照型の参照渡しをした時メソッド側で参照型の参照情報を変更すると呼び出し元の参照情報も変更される
上記の文章は、下記の Method1〜Method4 のうち、いずれの動作を指しているのでしょうか。
class Program { // 「参照型」の実験用に、ジャグ配列を用意しました。 static byte[][] ary = new byte[][] { new byte[] { 0x11, 0x12, 0x13 }, new byte[] { 0x21, 0x22, 0x23, 0x24 }, new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 }, new byte[] { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, };
static void Main() { byte[][] original = ary;
Console.WriteLine("=== 最初の状態 ==="); Array.ForEach(ary, b => Console.WriteLine(BitConverter.ToString(b)));
Console.WriteLine("=== Method1(参照型の参照渡し, メンバー編集) ==="); Method1(ref ary); Array.ForEach(ary, b => Console.WriteLine(BitConverter.ToString(b)));
Console.WriteLine("=== Method2(参照型の値渡し, メンバー編集) ==="); Method2(ary); Array.ForEach(ary, b => Console.WriteLine(BitConverter.ToString(b)));
Console.WriteLine("=== Method3(参照型の参照渡し, 参照情報差し替え) ==="); Method3(ref ary); Array.ForEach(ary, b => Console.WriteLine(BitConverter.ToString(b)));
Console.WriteLine("=== Method4(参照型の値渡し, 参照情報差し替え) ==="); Method4(ary); Array.ForEach(ary, b => Console.WriteLine(BitConverter.ToString(b)));
Console.WriteLine("=== originalの状態 ==="); Array.ForEach(original, b => Console.WriteLine(BitConverter.ToString(b)));
Console.ReadLine(); }
static void Method1(ref byte[][] a) { a[1] = new byte[] { 0xa1, 0xa2, 0xa3 }; }
static void Method2(byte[][] a) { a[2] = new byte[] { 0xfe, 0xff }; }
static void Method3(ref byte[][] a) { a = new byte[][] { new byte[] { 1, 2, 3 } }; }
static void Method4(byte[][] a) { a = new byte[][] { new byte[] { 0x91, 0x92, 0x93 } }; }
}
/*******************************/
=== 最初の状態 === 11-12-13 21-22-23-24 31-32-33-34-35 41-42-43-44-45-46 === Method1(参照型の参照渡し, メンバー編集) === 11-12-13 A1-A2-A3 31-32-33-34-35 41-42-43-44-45-46 === Method2(参照型の値渡し, メンバー編集) === 11-12-13 A1-A2-A3 FE-FF 41-42-43-44-45-46 === Method3(参照型の参照渡し, 参照情報差し替え) === 01-02-03 === Method4(参照型の値渡し, 参照情報差し替え) === 01-02-03 === originalの状態 === 11-12-13 A1-A2-A3 FE-FF 41-42-43-44-45-46
|