| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==Effective C# 4.0==
[[C#][Visual Studio][言語まとめ C#]]
{{amazon|4798122513}}
===イディオム===
}
*プロパティの自動実装構文と同じ構文を使用して、抽象クラスやインターフェースのメンバープロパティを実装出来る
public interface IHoge<&lt;T>&gt;
{
T Value
}
}
<&lt;blockquote>&gt;型が持つデータをpublicまたはprotectedとして公開する場合、常にプロパティを使用するべき。一連のデータやディクショナリを含む場合、インデクサを定義する。<&lt;/blockquote>&gt;
====constよりもreadonlyを利用する====
// コンパイル時定数指定不可
public static DateTime BirthDay = new DateTime(1971, 9, 30);
<&lt;blockquote>&gt;コンパイル時に値が決まっていなければならない場合は、const利用必須だが、まれなケース。リリースを重ねても値が不変である必要がある。そうでなければ、readonly を利用し、柔軟な処理を行えるようにすべき<&lt;/blockquote>&gt;
====キャスト時にはisあるいはas演算子を使用すること====
*ダウンキャストには2つの方法がある
**C言語以来のキャストを利用する
*できる限りasを利用するのが最良の選択
<&lt;blockquote>&gt;as 演算子はキャスト操作とよく似ています。 ただし、変換可能でない場合、as は、例外は発生せず、null を返します。<&lt;/blockquote>&gt;
object o = GetObject();
*互いのクラス間でデータをやり取りする必要があるが、互いのインターフェースを使用するほどには密に連携させたくない場合最善の選択肢
*対象を実行時に決定でき、複数の相手に同時に通知できる
<&lt;blockquote>&gt;デリゲートとはメソッドへの参照を含んだオブジェクト<&lt;/blockquote>&gt;
*C#にはデリゲートを表現するためのラムダ式形式の構文が用意されている
*Predicate<&lt;T>&gt;,Action<>&lt;&gt;,Func<> &lt;&gt; など一般的なデリゲート形式が数多く用意されている
====イベントパターンの実装により通知を行うこと====
====クラス内オブジェクトの参照を返さないようにすること====
===フレームワークの活用===
====イベントハンドラよりもオーバーライドを優先すること====
====IComparable<&lt;T>&gt;とICompare<&lt;T>&gt;を実装して順序関係をサポートする====
====ICloneableを使用しないこと====
====親クラスの変更に応じる場合のみnew修飾子を使用すること====

案内メニュー