在下面的代码中,结构是从数组和列表中获取的。当按索引获取项目时,数组似乎是通过引用来完成的,而列表似乎是通过值来完成的。有人可以解释这背后的原因吗?
struct FloatPoint {
public FloatPoint (float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
public float x, y, z;
}
class Test {
public static int Main (string[] args) {
FloatPoint[] points1 = { new FloatPoint(1, 2, 3) };
var points2 = new System.Collections.Generic.List<FloatPoint>();
points2.Add(new FloatPoint(1, 2, 3));
points1[0].x = 0; // not an error
points2[0].x = 0; // compile error
return 0;
}
}
将结构定义更改为类可以编译。