次のコードでは、構造体は配列とリストから取得されます。アイテムをインデックスで取得する場合、配列は参照でそれを行うように見えますが、リストは値でそれを行うように見えます。誰かがこれの背後にある理由を説明できますか?
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;
}
}
構造体定義をクラスに変更すると、両方がコンパイルされます。