泥庭

2015年7月24日

【C#6.0】ラムダ式本体によるメンバーの記述

Filed under: .NET, C# — タグ: , , — yone64 @ 1:54 PM
今日は、ラムダ式本体によるメンバーの記述です。ながい。
# 拍子抜けするほどはまりどころがないので、さらさらいくよ。

ラムダ式(”{}”で囲まなくてよい式タイプのやつ)がメソッドのやプロパティーの本体記述に使えるようなりました。
そのままですね。さっそくサンプル。
// メソッドの本体をラムダでかける。
public int Method1() => 1;

// ↓ と同じ
//public int Method1()
//{
//    return 1;
//}

// void でも OK.
public void Method2() => Console.WriteLine("a");

// 戻値を捨てるのも可能
public void Method3() => DateTime.Now.ToString();

// 中身のないものは無理っぽい。
// おとなしく↓こう書きましょう。短くならないし
public void Method4() { }

// 型制約もかける。間延び感があるけど
public T Method5<T>(List<T> list) where T : class => list?.FirstOrDefault();

// async/await も問題なし。
public async Task Method6(Action act) => await Task.Run(act);

// プロパティーの本体もラムダでかける。
public int Property1 => 1;

// ↓ と同じ
//public int MyProperty1
//{
//    get
//    {
//        return 1;
//    }
//}
素直です。{}つけて展開すると元通りってだけですもんね。
ちょっと、きわい書き方が出来ないか考えてみたんですが、思い浮かびませんでした。
問題なるとすれば、自動実装プロパティーのエントリーの際に書いたちょっと紛らわしいパターンよね?ぐらいしょうか?
// ちょっと紛らわしいシリーズ
// どれが何かわかるかな?
public Func<int, int> Hoge1 { get; set; } = a => a * a;

public Func<int, int> Hoge2 { get; } = a => a * a;

public Func<int, int> Hoge3 = a => a * a;

public Func<int, int> Hoge4 => a => a * a;

public Func<int, int> Hoge5() => a => a * a;
答えは伏せたままにしておきます。(そんな難しくないし。
Visual Studio以外の環境でレビューしている人が迷惑なぐらいかな?
広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。