けろ-みおさんより
[VB2010]自動実装プロパティ の記事に
>仕組み上、本当に等価であるのか?ILDASMの結果を掲載してもらえると嬉しいです。
というコメントををいただいたので調べてみました。
まず class1 と class2 というクラスを準備し、
class1にはこれまで通りの書き方でプロパティを作成
class2には自動実装プロパティを作成
コードは下記の通りです。
これを ILDASM で比較表示してみました。
上記の結果から、これまでの「書き方と自動実装プロパティは等価である」と言うことを証明できました。
ついでなので VS2010 CTP の C# の方も見てみました。
VB.NETと同じように、class1にはこれまで通りの書き方で、class2には自動実装プロパティで書きました。
ちなみに C#の方はたしか 3.0 のバージョンから自動実装プロパティが使用できるようになったと記憶しています。
で ILDASM の結果は下記の通りです。
class2の方では裏で<employee>k__BackingField という private stringが作成されていることがわかります。
これはMSDNの自動実装するプロパティ (C# プログラミング ガイド) で バッキングフィールド という名称で説明がされています。
ということで、C#の方は厳密には等価ではないことがわかります。
Please follow and like us:
コメント