無理やりワンライナー

こんな感じのときってあると思います。

var result = "";
if( 条件1 ){
  result = "1つ目";
}else if( 条件2 ){
  result = "2つ目";
}

この初期化めんどくさくない?

var result = "";

三項演算子

ただ、三項演算子で書くと「(◕‿‿◕)ワケガワカラナイヨ・・・」

var result = (条件1) ? "1つ目" : (条件2) ? 2つ目 : "";

メソッド

メソッドに切り出したいけど、メソッド名考えるの大変なんだよなー

var result = GetResult( 条件 );

string GetResult( 条件 ){
  if( 条件1 ){
    return "1つ目";
  }else if( 条件2 ){
    return "2つ目";
  }
  return "";
}

匿名メソッド&即実行

Funcで無理やり関数宣言&即実行じゃー

var result =
  ( (Func<string>)( () => {
    return "1";
  }) )();

または

var result = 
  ( new Func<string>( ()=>{
    return "2";
  }) )();

()括弧多すぎ問題


そしてStaticへ・・・

そしてこうなった・・・

var result = Func.Run( ()=>{
    return "1";
  } );

public static class Func {
  public static T Run<T>( Func<T> func ) {
    return func();
  }
}

他の便利な使い方

初期化のときにメソッドの形で書けます。

public class Item {
  public string Value { get; set; } = Func.Run( () => { return ""; } );
}

初期化のときにメソッドの形で書けます。その2

var item = new Item(){
  Value = Func.Run( () => { return ""; } ),
}