Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

LINQで書くとデバッグしづらいよね?そんなことないよ

$
0
0

小ネタです。 LINQで処理をぱぱっと1ステートメントで書けると気持ちいいですよね。 でも、デバッグ難しくない?ということがあるのですが大丈夫です安心してください。

ブレークポイントのはり方のコツさえつかめば大丈夫です。例えば以下のようなコードがあるとします。

using System;
using System.Linq;

namespace ConsoleApp10
{
    class Program
    {
        staticvoid 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 valuein values)
            {
                Console.WriteLine(value);
            }
        }
    }
}

Selectに意図した値が渡ってきてるのか見たい…!!(今回の場合2と4が渡ってくるはずですよね) そんなときのデバッグ手法ですが、まずシンプルな方法として古き良きprintfデバッグがありますよね。

using System;
using System.Linq;

namespace ConsoleApp10
{
    class Program
    {
        staticvoid 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 valuein values)
            {
                Console.WriteLine(value);
            }
        }
    }
}

気持ちよさ台無しなうえに確認したいところに都度都度出力入れてくなんて現実的じゃないですよね。 ということでブレークポイントはりましょう。

ブレークポイントの一番簡単?というか多くの人が知ってるポピュラーなやり方としてはエディタの左端のグレー部分でクリックするものだと思います。

f:id:okazuki:20170723165211p:plain

でも、この方法だと行にしかはれないです。そうLINQのラムダ式の中で止めたいというのに対応できない。 最近のデバッガは進化してて、ラムダ式の中にもブレークポイントはることができます。

やり方は簡単、ラムダ式の中にカーソルを持って行ってF9を押すだけ。 マウスが好きな人は、ラムダ式の中にカーソルを持って行って右クリックメニューからブレークポイントの挿入をすればOKです。

f:id:okazuki:20170723165514p:plain

すると、こんな感じに色がつきます。

f:id:okazuki:20170723165602p:plain

この状態でデバッグ実行するとばっちりラムダ式の中でブレークしてくれます!!

f:id:okazuki:20170723165713p:plain

ということで快適なLINQ生活を!!


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>