C# の型は大きく 2 つのカテゴリに分かれます。値型(データを直接格納する)と参照型(ヒープ上のデータへの参照/ポインタを格納する)です。両者は格納方法、コピー方法、比較方法が異なり、これは言語全体の挙動に影響する重要な違いです。
2 つのカテゴリ
Value types → struct, int, double, bool, char, enum, DateTime, decimal
Stored INLINE (stack for locals); copied BY VALUE.
Reference types → class, string, array, object, interface, delegate
Variable holds a REFERENCE to data on the heap; copied BY REFERENCE.
重要な違い: コピーのセマンティクス
a = ;
b = a;
b = ;
Point { X; }
Point p1 = () { X = };
Point p2 = p1;
p2.X = ;
{ Value; }
Box box1 = () { Value = };
Box box2 = box1;
box2.Value = ;
