ちっち@ゲーム開発中 @koromosoft-dev.com · Feb 17

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

?

Replies

ちっち@ゲーム開発中 · Feb 17

あと、get_Yについている謎のコンストラクタはなんだろう・・・(どこで呼ばれている?)