Effective C# 3rd 読書メモ 30 ループよりもクエリ構文を使う

ループは手続き的な構文だが、LINQのクエリは宣言的な構文である。できることは同じでも、クエリ構文を使ったほうが、よりコードの意味が伝わりやすくなる。 以下のコードはループを使った例である。 public static …

Effective C# 3rd 読書メモ 29 コレクションを返すよりもイテレーターメソッドを使う

一連の要素をメソッドから返す際は、イテレーターメソッドを作成すべきである。そうすることで、呼び出し側の使い勝手が良くなるし、コレクション全体を取得して返すよりもパフォーマンスが良くなる。 イテレーターメソッドとは、yie …

Effective C# 3rd 読書メモ 28 特定の型のコレクションに拡張メソッドを用意することを検討する

List<int>のような、組み込みの型を使用したコレクションで、さらに追加の機能が必要な場合、拡張メソッドを使って実装できる。 たとえば、System.Linq.Enumerableには、IEnumerab …

Effective C# 3rd 読書メモ 27 最小限のインターフェイスを拡張メソッドで増強する

拡張メソッドを使うと、インターフェイスに機能を追加することができる。 System.Linq.Enumerableクラスは拡張メソッドの好例である。System.Enumerableには、IEnumerable<T …

Effective C# 3rd 読書メモ 26 ジェネリックインターフェイスに加えてクラスインターフェイスを実装する

ジェネリックなインターフェイスだけでなく、古典的な非ジェネリックのインターフェイスもサポートすることで、クラスはより便利になる。 たとえば、クラスにオブジェクト間の比較機能をもたせたい場合、IComparable< …