【VisualStudio】 デバッガで結果ビューを表示しようとするとエラーになる

IEnumerableを継承した独自クラスを作成しているとたまに結果ビューでデバッガがエラーを吐いたりすることがあります。

 

おかしいなと思ってforeachループを回してみるとなんの異常も見当たらず。エラーを吐かないバグはプログラマの天敵です。

 

例えば無限ループにはまっていたりすれば一瞬にして原因究明が出来ていいのですが(よくない)、デバッガのほうのエラーはトレスできません。

 

これはGetEnumerator()の明示的実装と暗黙的実装がクラスに混在している場合に起きることで、

デバッガは明示的実装を参照し

foreachは暗黙的実装を参照するからです。(コンパイラが選択?)

なぜだかは分かりませんが。

 

したがってforeach出来て結果ビューがおかしいときは明示的実装と暗黙的実装の差異を取り除くか、どちらかに統一してあげればよいでしょう。