小ネタです。 LINQで処理をぱぱっと1ステートメントで書けると気持ちいいですよね。 でも、デバッグ難しくない?ということがあるのですが大丈夫です安心してください。
ブレークポイントのはり方のコツさえつかめば大丈夫です。例えば以下のようなコードがあるとします。
using System; using System.Linq; namespace ConsoleApp10 { class Program { static void Main(string[] args) { var numbers = new[] { 1, 2, 2, 3, 3, 3, 4, 4, 4 }; var values = numbers .Where(x => x % 2 == 0) .Distinct() .Select(x => x * x); foreach (var value in values) { Console.WriteLine(value); } } } }
Selectに意図した値が渡ってきてるのか見たい…!!(今回の場合2と4が渡ってくるはずですよね) そんなときのデバッグ手法ですが、まずシンプルな方法として古き良きprintfデバッグがありますよね。
using System; using System.Linq; namespace ConsoleApp10 { class Program { static void Main(string[] args) { var numbers = new[] { 1, 2, 2, 3, 3, 3, 4, 4, 4 }; var values = numbers .Where(x => x % 2 == 0) .Distinct() .Select(x => { Console.WriteLine(x); return x* x; }); foreach (var value in values) { Console.WriteLine(value); } } } }
気持ちよさ台無しなうえに確認したいところに都度都度出力入れてくなんて現実的じゃないですよね。 ということでブレークポイントはりましょう。
ブレークポイントの一番簡単?というか多くの人が知ってるポピュラーなやり方としてはエディタの左端のグレー部分でクリックするものだと思います。
でも、この方法だと行にしかはれないです。そうLINQのラムダ式の中で止めたいというのに対応できない。 最近のデバッガは進化してて、ラムダ式の中にもブレークポイントはることができます。
やり方は簡単、ラムダ式の中にカーソルを持って行ってF9
を押すだけ。
マウスが好きな人は、ラムダ式の中にカーソルを持って行って右クリックメニューからブレークポイントの挿入をすればOKです。
すると、こんな感じに色がつきます。
この状態でデバッグ実行するとばっちりラムダ式の中でブレークしてくれます!!
ということで快適なLINQ生活を!!