やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

C#の概念 ラムダ式

 () =>で書く短いメソッド。

成果物

情報源

コード

class Main { public void Run() => Console.WriteLine("ラムダ式。"); }

class Main {
    public void Run() {
        Run0();
    }
    private void Run0() {
        Action<int> act = param => {
            Console.WriteLine($"ラムダ式。(文): {param}");
            Console.WriteLine($"ラムダ式。(文)二行目。: {param}");
        };
        act(100);
    }
}

 以下はエラーになった。なぜ?

class Main {
    public void Run() => {
        Console.WriteLine("ラムダ式。(文)");
        Console.WriteLine("ラムダ式。(文)二行目。");
    }
}
lesson1/Main.cs(5,30): error CS1525: Invalid expression term '{'
lesson1/Main.cs(5,30): error CS1002: ; expected
lesson1/Main.cs(5,30): error CS1519: Invalid token '{' in class, struct, or interface member declaration
lesson1/Main.cs(6,30): error CS1519: Invalid token '(' in class, struct, or interface member declaration
lesson1/Main.cs(6,31): error CS1031: Type expected
lesson1/Main.cs(6,31): error CS8124: Tuple must contain at least two elements.
lesson1/Main.cs(6,31): error CS1026: ) expected
lesson1/Main.cs(6,31): error CS1519: Invalid token '"ラムダ式。(文)"' in class, struct, or interface member declaration
lesson1/Main.cs(7,30): error CS1519: Invalid token '(' in class, struct, or interface member declaration
lesson1/Main.cs(7,31): error CS1031: Type expected
lesson1/Main.cs(7,31): error CS8124: Tuple must contain at least two elements.
lesson1/Main.cs(7,31): error CS1026: ) expected
lesson1/Main.cs(7,31): error CS1519: Invalid token '"ラムダ式。(文)二行目。"' in class, struct, or interface member declaration
lesson1/Main.cs(10,1): error CS1022: Type or namespace definition, or end-of-file expected

非同期

 よくわからん。一応動いてる。

class Main {
    public void Run() {
        var task = Run0();
        task.Wait();
    }
    private async Task Run0() {
        Func<Task> act = async () => {
            int wait = 2000;
            Console.WriteLine($"{wait}ミリ秒待機中……");
//            await Task.Delay(wait);
            await Task.Delay(wait).ConfigureAwait(false);
            Console.WriteLine($"非同期ラムダ式。(文)");
        };
        await act();
    }
}

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux