C# structは、え、罠???

C#で、 クラスインスタンスを作るときはヒープに配置されるのに、 構造体インスタンスを作ったらスタックに配置されるって本当かい??

と思って調べると確かに、"new" をしてスタックに乗る場合と、そうでない場合もあるようだ。 構造体を選択する基準は以下の通りらしい。

型が以下の特徴をすべて備えていない限り、構造体を定義してはいけません。

プリミティブ型(integer、doubleなど)と同様に、論理的に単一の値を表す。 インスタンスサイズが16バイトよりも小さい。 不変的である。 頻繁にボックス化する必要がない。

ちなみに、Class内にある構造体ですとClassをnewする限りはclass毎ヒープに乗るので関係ないっす。