C# 람다 내부 구현

마법은 없다. Lambda를 컴파일러가 어떤식으로 구현하는지 알아둘 필요가 있다. public static class LambdaExample { public static void Run() { int localInt = 123456789; string localString = "LocalString"; ActionRunner(() => { Console.WriteLine($"{localInt}, {localString}"); }); } private static void ActionRunner(Action action) { action?.Invoke(); } } Decompiled il source // Type: CSharpExamples.LambdaExample // Assembly: CSharpExamples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: B420F7F8-9269-4798-8719-2A8ECDC7FBCA // Location: /Users/geunheepark/Projects/private/CSharpExamples/CSharpExamples/bin/Debug/netcoreapp3.1/CSharpExamples.dll // Sequence point data from /Users/geunheepark/Projects/private/CSharpExamples/CSharpExamples/bin/Debug/netcoreapp3.1/CSharpExamples.pdb .class public abstract sealed auto ansi beforefieldinit CSharpExamples....

September 20, 2020 · 4 min · 725 words · penspanic