を返すメソッドがありIEnumerable<T>
、そのメソッド内のコードをデバッグしようとしています。
デバッグ中に Visual Studio でコードをステップ実行するたびに、問題のメソッドがステップオーバーされます。
yield return
メソッド内にブレークポイントを配置しても、ブレークポイントはヒットしません。メソッドから偽の T を実行してテストしたところ、コードは確実に実行されています。
この方法では IEnumerable メソッドをデバッグすることはできないのでしょうか、それとも何か他の間違いをしているのでしょうか?
ベストアンサー1
このメソッドは、IEnumerable 内の項目を使用するときにのみ実行されます。IEnumerable は項目を遅延読み込みするため、IEnumerable を返すメソッドを呼び出しているからといって、その時点でメソッドが実際に呼び出されるわけではないことに注意してください。呼び出し時にすぐに実行されるようにするには、メソッド呼び出しの最後に ToList() を追加します。
var result = myEnumerableMethod().ToList();