私はC#プロジェクトに取り組んでおり、私のコードは次のようなものです:
public struct Point
{
public int X;
public int[,] arr;
}
List<Point> po=new List<Point>();
void func()
{
Point p1;
p1.arr = new int[1, 1];
p1.X = 10;
p1.arr[0, 0] = 1;
func2(p2);
p1.X=20;
p1.arr[0,0]=10;
}
void func2(Point h)
{
po.Add(h);
}
このコードを追跡して func2 から戻ると、 p1.x を変更すると、リスト内のポイント (x パラメータ) は変更されませんが、p1.arr を 10 に変更すると、リスト内のポイント (arr パラメータ) も 1 から 10 に変更されます。なぜこれが起こったのか、この問題を解決するにはどうすればよいですか?