C#がクラスと構造体の両方をサポートしたのは失敗だったな。

Listから値を取り出して、obj.value = newValue とした時に
元のリストが更新されているか否かの誤解が酷い。

いっそstruct自体をunmanageにしちゃえばよかったんだ。