[C#]プロパティで無限ループするとVisualStudioが落ちた話
C#初心者の頃の話です。
親フォームにデータを渡したいなどというありがちな難問にぶつかっていました。
その頃はまだアクセス修飾子さえ理解していなかったので、フィールドやメソッドをpublicにするとかまったくわかっていませんでした。
がんばって調べたらよくわからんが「プロパティ」なるものを使えばできるという情報を拾ってきたのです。
で、見よう見まねでコードを書いたらこんな感じになりました(たしか)
int _Test; public int Test { get { return Test; } set { Test = value; } }
Testプロパティを参照しようとするとgetアクセサでTestプロパティが参照され、getアクセサでTestプロパティが参照され・・・と、どう見ても無限ループ。しかし、そもそもプロパティの意味を理解していなかったのでそれをビルドしました。
結果はもちろん、無限ループでクラッシュ。
その上、VisualStudioのデザイナもプロパティを参照しようとして無限ループでVisualStudioクラッシュ。
そしてVisualStudioが再起動するもまたデザイナの読み込みでクラッシュ。そこらへんでVisualStudioがファイルに問題があるかもしれないといってファイルが開かれていない状態で再起動します。
しかし、そんな配慮も無視し原因のわからない私はまたソリューションエクスプローラからデザイナを開いてクラッシュorz
クラッシュしたときにメッセージも「ご迷惑をおかけします・・・」のダイアログでの強制終了だったので初心者な私には「デザイナを開くとクラッシュする」ということしかわかりませんでした。
何度も何度もクラッシュと再起動を繰り返し、もしやこの書き方だと無限ループしちゃうのか?と気が付いたのは数時間後のことでしたとさ。
無知というのは怖いものです。