連載:[完全版]究極のC#プログラミング

Chapter7 ラムダ式(後編)

川俣 晶
2009/11/02

7.8 ラムダ式のさまざまなバリエーション

 ラムダ式には、さまざまな書き方のバリエーションがある。引数が1つの場合のみ引数を囲うカッコを省略できるといった特殊な構文も存在するので、全貌を把握しにくい。そこで、主立った書き方のバリエーションをリスト7.20にまとめておく。

using System;

delegate int 引数なし();
delegate int 引数1つ(int onlyOne);
delegate int 引数2つ(int first, int second);
delegate void 戻り値なし();

class Program
{
  static void Main(string[] args)
  {
    引数なし sample1 = () => 0;
    引数1つ sample2 = (x) => x * 2;
    引数1つ sample3 = (int x) => x * 2;
    引数1つ sample4 = x => x * 2;
    引数2つ sample5 = (x, y) => x * y;
    引数2つ sample6 = (int x, int y) => x * y;
    引数1つ sample7 = (x) => { return x * 2; };
    引数1つ sample8 = (int x) => { return x * 2; };
    戻り値なし sample9 = () => Console.WriteLine("Hello!");
  }
}
リスト7.20 ラムダ式のさまざまなバリエーション

● sample1 = () => 0

 引数が存在しないラムダ式を記述する場合は、引数のない空のカッコで書き始める。

● sample2 = (x) => x * 2

 引数が存在する場合は、それを(x)のようにカッコで囲うのが基本である。

● sample3 = (int x) => x * 2

 もちろん、引数に型指定を補ってもよい。補わなければならないケースは上で紹介したとおり存在する。

● sample4 = x => x * 2

 引数が1つの場合に限っては、引数を囲うカッコを省略してもよい。

● sample5 = (x, y) => x * y

 引数が複数ある場合はカンマで区切って列挙する。

● sample6 = (int x, int y) => x * y

 引数が複数ある場合でも、型指定は可能。

● sample7 = (x) => { return x * 2; }

 ステートメント型のラムダとして記述した例。

● sample8 = (int x) => { return x * 2; }

 ステートメント型のラムダでも引数の型は指定できる。

● sample9 = () => Console.WriteLine("Hello!")

 戻り値がない場合は、式としてvoid型を返すメソッドの呼び出しを記述できる。


 INDEX
  [完全版]究極のC#プログラミング
  Chapter7 ラムダ式(後編)
    1.7.1 ラムダ式は何をもたらすか?
    2.7.2 ラムダ式と匿名メソッドの違い
    3.7.3 ステートメント型のラムダ
    4.7.4 式形式のラムダの可能性
    5.7.5 型指定を省略できる場合、できない場合
    6.7.6 何もしないラムダ式
    7.7.7 ラムダ式の使用例/【C#olumn】「=>」は不等号?
  8.7.8 ラムダ式のさまざまなバリエーション
    9.7.9 ジェネリックメソッドと型推論
    10.7.10 オーバーロードの解決/値型と参照型の相違は何か?/練習問題
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」

@IT Special

- PR -

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH