← 戻る

C# ラムダ式とデータ操作(LINQ)

🧱 デリゲート(delegate)

仕組み

public delegate int Calc(int x, int y);  // デリゲート型の定義

public static int Add(int a, int b) => a + b;

Calc calc = Add;  // Addメソッドを代入
int result = calc(3, 5);  // 8

ポイント


🧩 Func / Action(汎用デリゲート)

Func

Func<int, int> doubleIt = x => x * 2;
Console.WriteLine(doubleIt(4));  // 8

Action

Action<string> greet = name => Console.WriteLine($"Hello, {name}!");
greet("your name");  // Hello, your name!

ポイント


🧠 ラムダ式(lambda expression)

特徴

書き方のバリエーション

x => x + 1                  // 引数1つ、処理1行
(x, y) => x * y             // 引数複数
x => { var y = x * 2; return y + 1; }  // 複数行処理

ポイント


🔔 イベント(event)

特徴

public event Action OnClick;

OnClick += () => Console.WriteLine("クリックされた!");

ポイント


🔍 LINQ × ラムダ式

特徴

var numbers = new List<int> { 1, 2, 3, 4, 5 };

var evens = numbers.Where(x => x % 2 == 0);   // 偶数だけ抽出
var doubled = numbers.Select(x => x * 2);     // 2倍に変換

よく使うメソッド

メソッド 目的 使用例
Where 条件で絞り込み list.Where(x => x > 10)
Select 要素の変換 list.Select(x => x * 2)
Count 条件に合う数 list.Count(x => x % 2 == 0)
OrderBy 昇順ソート list.OrderBy(x => x.Length)
OrderByDescending 降順ソート list.OrderByDescending(x => x)

🔄 全体のつながり

delegate(基本)
   ↓
Func / Action(汎用型)
   ↓
ラムダ式(処理を簡潔に記述)
   ↓
LINQやイベントで活用

✅ まとめ

用語 役割・特徴
delegate メソッドを変数のように扱う型。処理を渡せる
Func 戻り値ありの汎用 delegate
Action 戻り値なしの汎用 delegate
ラムダ式 処理を簡潔に書くための記法。Func や Action に代入できる
イベント delegate で処理を登録し、何かが起きたときに実行
LINQ データ操作のための機能。ラムダ式と組み合わせて使う