我正在研究 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。为什么会发生这种情况,如何解决这个问题?