📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
文字列「source lang」を「syntaxhighlight lang」に置換
19行目: 19行目:
デリゲートの作成において、C# 3.0で追加されたラムダ式を使用することで、匿名メソッドよりも簡潔に記述できる。<br>
デリゲートの作成において、C# 3.0で追加されたラムダ式を使用することで、匿名メソッドよりも簡潔に記述できる。<br>
また、IEnumerable<T>を実装したクラスであればインスタンスメソッドとして記述できる。<br>
また、IEnumerable<T>を実装したクラスであればインスタンスメソッドとして記述できる。<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  // 匿名メソッド
  // 匿名メソッド
  Func<string, bool> predicate = delegate (string str)
  Func<string, bool> predicate = delegate (string str)
36行目: 36行目:
  </source>
  </source>
<br>
<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  public static void Main (String[] args)
  public static void Main (String[] args)
  {
  {
53行目: 53行目:
LINQのCountメソッドはIEnumerable<T>型の拡張メソッドであり、引数はFunc<TSource, bool>型である。<br>
LINQのCountメソッドはIEnumerable<T>型の拡張メソッドであり、引数はFunc<TSource, bool>型である。<br>
Countメソッドは、nullチェック等の処理も含まれている。<br>
Countメソッドは、nullチェック等の処理も含まれている。<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  int count = names.Count(str => str.Length < 5);
  int count = names.Count(str => str.Length < 5);
  </source>
  </source>
65行目: 65行目:
これに対して、ラムダ式を<code>Expression</code>型の変数に代入すると、式木データとして扱うことができ、<br>
これに対して、ラムダ式を<code>Expression</code>型の変数に代入すると、式木データとして扱うことができ、<br>
以下のように、式中の項を取得するといった操作ができる。<br>
以下のように、式中の項を取得するといった操作ができる。<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  Expression<Func<int, bool>> e = n => n > 0;
  Expression<Func<int, bool>> e = n => n > 0;
  BinaryExpression lt = (BinaryExpression)e.Body;
  BinaryExpression lt = (BinaryExpression)e.Body;
81行目: 81行目:
<br>
<br>
以下の例では、1つ目のラムダ式はコンパイル可能であるが、2つ目はコンパイルエラーになる。<br>
以下の例では、1つ目のラムダ式はコンパイル可能であるが、2つ目はコンパイルエラーになる。<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  // コンパイル可能
  // コンパイル可能
  Expression<Func<int, bool>> p = n => n > 0;
  Expression<Func<int, bool>> p = n => n > 0;
102行目: 102行目:
<br>
<br>
これは、<code>c.City == "London"</code>の部分を式木データとして取得して、その内容を見ながらSQL文を生成している。<br>
これは、<code>c.City == "London"</code>の部分を式木データとして取得して、その内容を見ながらSQL文を生成している。<br>
  <source lang="csharp">
  <syntaxhighlight lang="csharp">
  // LINQクエリ式
  // LINQクエリ式
  var q = from c in db
  var q = from c in db