ホームに戻る
出典 :
構文:メソッドやプロパティをラムダ式で簡潔に実装するには?[C# 6.0/7.0]:.NET TIPS - @IT
関連 :
無名関数とラムダ式 デリゲートとイベント プロパティ
目次 :

ラムダ式を用いたメソッドの省略記法

メソッドの内容が単文の場合、ラムダ式を用いて簡潔に記述することができる。
これはC#6.0以降で有効。

戻り値のあるメソッド

// 通常の記法 public int Mul_(int a, int b) { return a * b; } // ラムダ式による記法 public int Mul(int a, int b) => a * b;

戻り値のないメソッド

// 通常の記法 public void Print_(string msg) { Console.WriteLine(msg); } // ラムダ式による記法(C#6.0) public void Print(string msg) => Console.WriteLine(msg);
ここで、ラムダ式(=> の右辺。この場合は Console.WriteLine(msg) )が値を返したとしても無視される。これは通常記法の場合と同様。

プロパティ、インデクサーへの応用

メソッドに限らず、プロパティやインデクサーに対しても同様に、ラムダ式を用いた簡潔な記法が適用できる。
C#6.0では読み取り専用のプロパティ、インデクサー(getter)に限定されていたが、C#7.0以降はsetterでも使用できる。
(尤もプロパティに限れば、単に値を読み書きするだけならば自動プロパティを用いるのが最も簡便である。)
尚、対象が読み取り専用の場合、get を省略できる。

プロパティ

public class Person { // 読み取り専用プロパティ : 通常記法 public string FullName_ { get { return FirstName + " " + LastName; } } // 読み取り専用プロパティ : ラムダ式記法 // (get を省略) public string FullName => FirstName + " " + LastName; // 読み書き可能プロパティ : 通常記法 private DateTime _birthday; public DateTime Birthday_ { get { return _birthday; } set { _birthday = value; } } // 読み書き可能プロパティ : ラムダ式記法 public DateTime Birthday { get => _birthday; set => _birthday = value; } }

インデクサー

読み取り専用

public class Group { // Personオブジェクトを保持する、キー付きのコレクション(SortedList) private SortedList<string, Person> _persons = new SortedList<string, Person>(); // 読み取り専用インデクサー : ラムダ式記法 // (get を省略) public Person this[string id] => _persons[id]; }

読み書き可能

public class Group { // Personオブジェクトを保持する、キー付きのコレクション(SortedList) private SortedList<string, Person> _persons = new SortedList<string, Person>(); // 読み書き可能インデクサー : ラムダ式記法 public Person this[string id] { get => _persons[id]; set => _persons[id] = value; } }