参照型メンバ(私の場合は文字列)を持つ値型をコピーすると、CLRはシャローコピー(book)を行います。だから私はちょうど実験するために小さなプログラムを書いたが、期待される結果を得ることはできない。私はここでいくつかの詳細が不足していると確信しています。参照型をメンバに持つ値型をコピーする
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("First Example");
//first example
Point p1 = new Point();
p1.Name = "firstPoint";
p1.X = 10;
p1.Y = 20;
Point p2 = p1;
p2.Name = "secondPoint";
p2.X = 40;
p2.Y = 50;
p1.Print(); //Prints - Name: firstPoint, X:10, Y:20
//Expected - Name: secondPoint, X:10, Y:20
p2.Print(); //Prints - Name: secondPoint, X:40, Y:50
Console.ReadLine();
}
}
public struct Point
{
public string Name;
public int X;
public int Y;
public void Print()
{
Console.WriteLine("Name: {0}, X: {1}, Y: {2}", this.Name.ToString(), this.X, this.Y);
}
}
Nameは参照型であり、p2によって変更されたため、p1.Print()は 'Name:secondPoint、X:40、Y:50'を出力することを期待しています。 – vabii
@VaibhavGathibandhe古いオブジェクトp1が古い参照に固執し、新しい参照がp2オブジェクトに割り当てられるように、参照自体を変更しています。 –
@Jenish ...ありがとう、完璧な意味がある。 – vabii