Effective C# 3rd 読書メモ 46 リソースの後始末にusingとtry/finallyを利用する

.NET Frameworkの管理下にない(アンマネージド)リソースを使用する型は、Dispose()メソッドによって明示的に解放すべきである。Dispose()メソッドをもつ型を使うときに、Dispose()を実行する …

Effective C# 3rd 読書メモ 45 メソッドの契約が満たされない場合に例外を使用する

メソッドが定められた振る舞いを行うことができない場合、例外によって失敗を報告すべきである。エラーコードの戻り値はたやすく無視されるし、エラーコードのチェックや伝播は正常系のコードを汚染し、中核となるロジックをわかりづらく …

Effective C# 3rd 読書メモ 44 バインドされた変数を書き換えてはいけない

以下のコードで、sequence()デリゲートはindex変数をキャプチャしている。 public static void Main(string[] args) { var index = 0; Func<IEn …

Effective C# 3rd 読書メモ 43 Single()とFirst()によってクエリの意味をわかりやすくする

Single()はただ1つの要素だけを返す。要素が存在しなかったり、複数の要素が存在した場合には例外が投げられる。必ず1つ存在するものを取得するにはSingle()を使うのが良い。 0個または1個の要素が返る場合は、Si …

Effective C# 3rd 読書メモ 42 IEnumerableとIQueryableのデータソースを区別する

IQueryableとIEnumerableはとても似たAPIシグネチャをもっている。また、IQueryableはIEnumerableを継承している。この2つのインターフェイスは原則として交換可能である。一方、一連の要 …