C#のStructは使い方を間違えるとパフォーマンスが大きく落ちるような罠がいくつかあるので、それらを簡単にまとめていきたいと思います。 structの防衛的コピー readonlyで宣言されたstructのプロパティやメソッドを呼び出すと、readonlyであることを保証するためにコピーを生成してそれを操作する挙動をします。 struct Foo { int num = 7; public int NumProperty => num; public int GetNum() { return num; } } //------------------------------ { readonly Foo foo = new Foo(); int tmp = 0; tmp = foo.num; //フィールドにアクセス コピーなし tmp = foo.NumProperty; //プロパ