1 / 2
C#12のプライマリコンストラクタを使ったとき、 class Hoge(int x, int y) { public int X => x; public int Y {get;} = y; } こう書いたときの、XとYのコードはどうコンパイルされるんだろうと思って、SharpLabで試した。 結果は添付の通りで、最終的なasmに違いはなさそうなんだけど、コンパイラによって異なるかも? (画像左:x86 asm / 画像右:IL) ILでは、Yはinitonlyのバッキングフィールドが生成されているのに対し、Xはinitonlyになっていない(名前もちがう)という違いはあるっぽい
1 likes 1 replies
?