int のようなすべてのプリミティブ型は値型であり、スタック上に作成されますが、文字列、オブジェクト配列などは参照型であり、ヒープ上に作成されることを知っています。
私の疑問は次のとおりです。int i = new int(); のような整数のオブジェクトを作成すると、オブジェクトなので、スタックまたはヒープで作成されますか?
Eric Lippert は、あまり気にする必要はないと述べています。ここでそれを読んでください。
Int は値型であり、ほとんどの場合、スタックで作成されます。
整数がインスタンス化するクラス内の変数である場合、スタックには作成されません。その場合、インスタンスはヒープとそのすべてのメンバー (値の型を含む) にあります。
もちろん、上で提供したリンクは、私よりもはるかによく説明しています
簡単な答え: 実装の詳細。
長い答え: 実装の詳細 - 完全に実装します。
作成方法に応じて、どちらでも作成できます。クラスのメンバーですか?ローカル変数ですか?..
過去に私が通常この神話に反論してきた方法は、本当のステートメントは「デスクトップ CLR での C# の Microsoft 実装では、値がローカル変数またはラムダまたは匿名メソッドの閉じたローカル変数ではなく、メソッド本体が反復子ブロックではない一時的なものであり、ジッターは値を登録しないことを選択します。」
int i = new int();
と同等なint i = 0;
ので、いいえ、スタック/ヒープの割り当てに関して違いはありません。
値の型は常にスタック上で作成されるとは限らないことに注意してください。詳細な議論については、この素晴らしいブログ エントリを参照してください。