ラムダ式から呼び出しているメソッドにブレークポイントを置くと、ブレークポイントは決してヒットしません。ラムダの外側でメソッド呼び出しを移動すると、ブレークポイントがヒットします。例えばメソッドがラムダで呼び出されたときにブレークポイントがヒットしない
:
Function IncrementAll(ByVal items As IEnumerable(Of Integer)) As IEnumerable(Of Integer)
Return items.Select(Function(i) Increment(i))
End Function
Function Increment(ByVal i As Integer) As Integer
Return i + 1 'Breakpoint here
End Function
私はIncrementAllを呼び出す場合は、インクリメントでブレークポイントがヒットされません。 VS 2008をこれらのブレークポイントで停止させる方法はありますか?私はすべてのLINQをデバッグのためのループに書き直すという考えが嫌いです。
興味深いことに、.NETでこれをやったことは分かっています4. "items"に要素があり、デバッグ構成で実行中であることを確認しました(つまり、ブレークポイントはプロジェクトの別の場所)? –
ええ、私はitems.Select上のブレークポイントを置く場合はヒットし、items.Selectループを選択すると、Incrementのブレークポイントがヒットします。 – Misko