classは参照型だけどstructは値型だということに注意。classはnewしないと実体が無いが、structはnewなしで実体を持つ。代入すると、classでは参照がコピーされるので同一の実体を指すが、structでは値がコピーされるので別々の実体となる。
using System; class Hoge { public int x; } struct Piyo { public int x; } class Program { public static void Main(string[] args) { Hoge a = new Hoge(); Piyo b; a.x = 100; b.x = 200; Hoge c = a; Piyo d = b; c.x = 300; d.x = 400; Console.WriteLine($"a.x={a.x}"); Console.WriteLine($"b.x={b.x}"); Console.WriteLine($"c.x={c.x}"); Console.WriteLine($"d.x={d.x}"); } }
実行結果
a.x=300 b.x=200 c.x=300 d.x=400