構造体
構造体をコンテナに入れると、値の変更が面倒くさい。例えば、以下は最後の行でコンパイルエラーになる。
List<Point> l = new List<Point>(); l.Add(new Point()); l[0].X = 1;
NullableみたいなValueRefを使えば、PointをValueRef
[Serializable] public sealed class ValueRef<T> where T : struct { public T Value; public ValueRef() { } public ValueRef(T t) { Value = t; } public override string ToString() { return Value.ToString(); } public override bool Equals(object obj) { return Value.Equals(obj); } public override int GetHashCode() { return Value.GetHashCode(); } public static implicit operator ValueRef<T>(T t) { return new ValueRef<T>(t); } }