C#のラムダをWin32呼び出しで使う
あたり前っちゃーあたり前なんですが、Win32を呼び出す際の選択肢として、なぜかラムダを使うという選択肢が思いつかなかった。
delegate Boolean EnumWindowProc(IntPtr hwnd, IntPtr lp); [DllImport("User32.dll")] private static extern Boolean EnumWindows(EnumWindowProc handler, IntPtr lparam); public void Enum() { int count = 0; EnumWindows( (hwnd, lp) => { ++count; return true; }, IntPtr.Zero); Console.WriteLine(count); }
処理内容が小さい場合はもちろん、呼び出し処理を完全にラップして抽象化する場合にも使える。コールバック関数がそこだけ必要ってケースも多いので利便性高い。