Effective C# 3rd 読書メモ 19 実行時型チェックを使ってジェネリックのアルゴリズムを特化させる

以下のコードは、通常のEnumerable<T>とは逆順に走査を行う、ReverseEnumerable<T>の実装である、
ここでは、以下の工夫によってコピーの回数を減らし、パフォーマンスを向上させている。

  • IList<T>を実装している型はそのまま利用する
  • ICollection<T>を実装している型からサイズを取得する

さらに特化させる方法として、文字列を逆順に操作するためのReverseStringEnumerable<T>を定義し、ReverseEnumerable<string>として呼び出された場合に使用する、といった特化の仕方も考えられる。
このように、実行時型チェックによって、渡された型に応じた最適な処理を実装できる。

コメントを残す