is2004 | Wiki | グルメマップ | ブックマーク | OWiki

C-sharp

3: Prefer the is or as Operators to Casts

  • as 演算子
    • HogeClass h = o as HogeClass;
    • downcast に使える(実行時型情報の確認)
    • 型の不一致は null で例外はとばない
  • cast 演算子
    • HogeClass h = (HogeClass)o;
    • downcast とユーザー定義型変換に使える
    • 型の不一致は例外
  • is 演算子
    • if (o is HogeClass)
    • キャスト可能性の確認
    • 実行時型情報が一致するか、変換演算が定義されていれば true
    • キャストを try でくくる必要がなくなる
  • foreach は cast なので例外がとぶ可能性に注意せよ
  • 実行型は .GetType() で取得

5: Always Proihvide ToString()

  • System.IFormattable
    • ToString(string format, IFormatProvider formatProvider) の format に文字列を渡すことで、フォーマットを切り替え可能
    • format = "G" は general の意になるらしいので、ここにデフォルト
    • IFormatProvider と ICustomFormatter で例えば 50, 30, 20 区切りの csv とかに変えられる

6: Distinguish Between Value Types and Reference Types

Value typeReference type
structclass
データを格納動作を定義
多態化できない多態化できる
small and lightweightform the class hierarchy
戻り値自動でコピーが作られるリファレンス返し
cloneコストふつうタイプチェック(というか、仮想関数テーブル引きかな?)
メモリコストメンバ変数分だけ(C++ でいえば MyType() )ポインタとメンバ変数(new MyType() )
配列sizeof(t) * nsizeof(pointer) * n

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-23 (土) 18:58:43 (3655d)