FC2ブログ
Null伝搬演算ってのが実装されるのね
時期バージョンのC#ではいろいろと機能が追加されるのね。
ttp://blog.xin9le.net/entry/2014/07/06/230847
こちらの方の纏めが素晴らしいです。

とりあえずネタがないので、Null伝搬演算を今の実装で再現するとこんなかんじじゃね?という事で書いてみる。
ジェネリック+拡張メソッドを使って、似たようなことをやってるだけ。
すごい単純で、自身がNULLだったら戻り値を返さないと駄目なので、defaultを使って初期値を返す。
自身がNULL以外なら、匿名メソッドを呼び出す。これだけ。

public
 static class NullObjectExtension
{
    public static TResult _<TSrouce, TResult>(this TSrouce self, Func<TSrouce, TResult> func)
    {
        return self == null ? default(TResult) : func(self);
    }
}

public class Test
{
    public string Name { getset; }

    public int? Num { getset; }

    public Test()
    {
        Name = "('A`)";
        Num = 1;
    }

    public static void NullTest()
    {
        var obj = new Test();

        var j1 = obj._(m => m.Num) ?? 0;
        var k1 = obj._(m => m.Name) ?? "うぇうぇ";

        obj = null;
        var j2 = obj._(m => m.Num) ?? 0;
        var k2 = obj._(m => m.Name) ?? "うぇうぇ";
    }
}
スポンサーサイト
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ