ジェネリック・ラムダ・3項演算子・合体演算子

 面白いサンプル作れなかったが、やっと思いつきました。NullObjectならぬNullMethod?

    //ジェネリックメッソッドでnullチェック
        Action NullFunc<T>(T o)
        {
      //3項演算子でoがnullなら何もしないデリゲートを返す。null以外ならあえてnullを返す。
            return o == null ?  (Action)( () => { } ): null;
        }
    //メインのStream系処理が終了したのでリソース解放 忌まわしいnullチェックを簡略化
        public void close()
        {
      //Actionがnullだった場合_ShIO及び_Shellにはインスタンスが有ることを保証されているのでリソース解放(_XXX.Close)
            (NullFunc<Stream>(_ShIO) ?? _ShIO.Close)();
            (NullFunc<SshShell>(_Shell) ?? _Shell.Close)();
        }

 若しくは

        public void close()
        {
            
            Func<bool,Action> NullFunc =  o =>   o  ? (Action)( () => { } ): null;
      
            (NullFunc(Null == _ShIO)  ??  _ShIO.Close)();
            (NullFunc(Null == _Shell) ?? _Shell.Close)();
        }

メッソッドチェーンも入っているけど、まぁいいか。とにかく括弧が多すぎて可読性は落ちるのが問題  (2番目が説明楽だな。)