このトピックはまだ評価されていません - このトピックを評価する

目 次

  謝辞(17)
   はじめに (19)
 

第 1 部 Microsoft .NET Frameworkの基礎

 
 

第 1 章 .NET Frameworkのアーキテクチャ

3

  1.1ソースコードをコンパイルしてマネージモジュールにする3
  1.2マネージモジュールをアセンブリにまとめる7
  1.3共通言語ランタイムのロード9
  1.4アセンブリのコードの実行12
  1.5ILとコードの検証19
  1.6.NET Frameworkクラスライブラリ21
  1.7共通型システム24
  1.8共通言語仕様(CLS)27
  1.9アンマネージコードとの相互運用31
 
 

第 2 章 アプリケーションと型のビルド、パッケージング、配布、管理

35

  2.1.NET Frameworkの配布に関する目標35
  2.2型をビルドしてモジュールを作成する37
  2.3モジュールを結合してアセンブリを構成する46
   2.3.1Visual Studio .NETのIDEを使ってプロジェクトにアセンブリを追加する52
   2.3.2アセンブリリンカーの利用54
   2.3.3アセンブリにリソースファイルを含める56
  2.4アセンブリのバージョンリソース情報56
   2.4.1バージョン番号60
  2.5カルチャ61
  2.6シンプルなアプリケーション配布(プライベートアセンブリ)63
  2.7シンプルな管理作業(構成)64
 
 

第 3 章 共有アセンブリ

69

   3.1 2種類のアセンブリと2種類の配布 70
   3.2 アセンブリに厳密名を付ける 71
   3.3 グローバルアセンブリキャッシュ 76
    3.3.1 GACの内部構造 81
   3.4 厳密名付きアセンブリを参照するアセンブリのビルド 84
   3.5 厳密名付きアセンブリは改ざんできない 87
   3.6 遅延署名 88
   3.7 厳密名付きアセンブリをプライベートに配布する 92
   3.8 サイドバイサイド実行 93
   3.9 ランタイムによる型の参照の解決 95
   3.10 高度な管理作業(構成) 98
    3.10.1 発行者ポリシー制御 102
   3.11 欠陥アプリケーションの復元 104
 

第 2 部 型の操作とCLR(共通言語ランタイム)

 
 

第 4 章 型の基礎

111

  4.1すべての型はSystem.Objectから派生する111
  4.2別の型への変換(キャスト)113
   4.2.1C#のisおよびas演算子を利用したキャスト115
  4.3名前空間とアセンブリ118
 
 

第 5 章 単純型、参照型、値型

123

  5.1プログラミング言語と単純型123
   5.1.1単純型の操作とChecked/Unchecked127
  5.2参照型と値型130
  5.3値型のボックス化とボックス化解除136
 
 

第 6 章 オブジェクトの共通操作

149

  6.1オブジェクトの等値性とアイデンティティ149
   6.1.1ObjectのEqualsをオーバーライドしていない基底型から継承した参照型によるEqualsの実装150
   6.1.2ObjectのEqualsをオーバーライドしている基底型から継承した参照型によるEqualsの実装152
   6.1.3値型によるEqualsの実装154
   6.1.4Equalsおよび==演算子と!=演算子の実装のまとめ156
   6.1.5アイデンティティ157
  6.2オブジェクトのハッシュコード158
  6.3オブジェクトの複製161
 

第 3 部 型の設計

 
 

第 7 章 型のメンバとそのアクセス制御

167

  7.1型のメンバ167
  7.2アクセス修飾子と定義済み属性171
   7.2.1型の定義済み属性172
   7.2.2フィールドの定義済み属性173
   7.2.3メソッドの定義済み属性173
 
 

第 8 章 定数とフィールド

175

  8.1定数175
  8.2フィールド176
 
 

第 9 章 メソッド

179

  9.1インスタンスコンストラクタ179
  9.2タイプコンストラクタ186
  9.3演算子をオーバーロードするメソッド189
   9.3.1演算子とプログラミング言語の相互運用性192
  9.4型変換演算子メソッド195
  9.5引数をメソッドに参照で渡す199
  9.6メソッドに可変個の引数を渡す204
  9.7仮想(virtual)メソッドの呼び出し207
  9.8仮想メソッドのバージョン管理208
 
 

第 10 章 プロパティ

215

  10.1引数をとらないプロパティ215
  10.2引数をとるプロパティ220
 
 

第 11 章 イベント

227

  11.1イベントを公開する型の設計228
  11.2イベント通知を受ける型の設計233
  11.3イベントへの登録の明示的な制御236
  11.4多くのイベントを定義する型の設計238
  11.5EventHandlerSet型の設計243
 

第 4部 基礎となる型

 
 

第 12 章 文字の扱い

249

  12.1文字249
  12.2System.String型253
   12.2.1文字列の作成253
   12.2.2文字列は不変255
   12.2.3文字列の比較256
   12.2.4文字列のインターン261
   12.2.5文字列のプーリング266
   12.2.6文字列の中の文字の検証266
   12.2.7そのほかの文字列操作270
  12.3動的な文字列作成を効率よく行う270
   12.3.1StringBuilderオブジェクトの作成271
   12.3.2StringBuilderのメンバ272
  12.4オブジェクトの文字列表現を取得する275
   12.4.1文字列の整形とカルチャ276
   12.4.2複数のオブジェクトを書式指定して単一の文字列にする280
   12.4.3独自のフォーマッタを提供する282
  12.5文字列をパースしてオブジェクトを取得する285
  12.6エンコーディング:文字とバイトを相互変換する290
   12.6.1文字のストリームをバイトにエンコードまたはデコードする297
   12.6.2文字列のBase64エンコードとデコード298
 
 

第 13 章 列挙型とビットフラグ

301

  13.1列挙型301
  13.2ビットフラグ306
 
 

第 14 章 配列

311

  14.1すべての配列は暗黙のうちにSystem.Arrayから派生する314
   14.1.1配列のキャスト316
  14.2配列を引数や戻り値として利用する318
  14.3下限がゼロでない配列を作成する319
  14.4配列への高速アクセス320
  14.5配列の次元と上下限の変更325
 
 

第 15 章 インターフェイス

327

  15.1インターフェイスと継承327
  15.2プラグインコンポーネントをサポートするアプリケーションの設計333
  15.3ボックス化された値型のフィールドをインターフェイスを使って操作する335
  15.4同名のメソッドを持つ複数のインターフェイスを実装する338
  15.5インターフェイスのメンバの明示的な実装340
 
 

第 16 章 カスタム属性

347

  16.1カスタム属性を利用する347
  16.2独自の属性を定義する351
  16.3属性のコンストラクタとフィールド/プロパティのデータ型355
  16.4カスタム属性の利用を検出する356
  16.52つの属性のインスタンスを一致させる361
  16.6擬似カスタム属性364
 
 

第 17 章 デリゲート

367

  17.1デリゲートの紹介367
  17.2デリゲートを使ってstaticなコールバックメソッドを呼び出す370
  17.3デリゲートを使ってインスタンスコールバックメソッドを呼び出す372
  17.4デリゲートの謎を解く373
  17.5デリゲートの歴史:System.DelegateとSystem.MulticastDelegate377
  17.6デリゲートが等しいことを確認する379
  17.7デリゲートのチェイン380
  17.8デリゲートのチェインに対するC#のサポート385
  17.9デリゲートチェインの起動を制御する385
  17.10デリゲートとリフレクション388
 

第 5 部 型の管理

 
 

第 18 章 例外処理

395

  18.1例外処理の進化396
  18.2例外処理のメカニズム398
   18.2.1tryブロック399
   18.2.2catchブロック400
   18.2.3finallyブロック402
  18.3例外の厳密な定義403
  18.4System.Exceptionクラス407
  18.5FCLに定義されている例外クラス408
  18.6独自の例外クラスの定義411
  18.7例外の適切な使い方416
   18.7.1必ずfinallyブロックを利用する417
   18.7.2何でもかんでも捕捉しない418
   18.7.3例外から正しく復旧する420
   18.7.4復旧不能な例外が起きたら処理途中のものはすべて取り消す420
   18.7.5実装の詳細を隠蔽する422
  18.8FCLの問題点424
  18.9パフォーマンスの考慮427
  18.10例外フィルタ430
  18.11未処理の例外432
   18.11.1未処理の例外が発生したときのCLRの動作の制御438
   18.11.2Windowsフォームと未処理の例外439
   18.11.3ASP.NETのWebフォームと未処理の例外441
   18.11.4ASP.NETのXML Webサービスと未処理の例外441
  18.12例外のスタックトレース442
   18.12.1スタックトレースのリモーティング444
  18.13例外のデバッグ445
   18.13.1Visual Studio .NETでデバッグするコードの種類の設定449
 
 

第 19 章 自動メモリ管理(ガベージコレクション)

453

  19.1ガベージコレクションプラットフォームの基礎知識453
  19.2ガベージコレクションのアルゴリズム457
  19.3ファイナライゼーション461
   19.3.1Finalizeメソッドが呼び出されるトリガ468
   19.3.2ファイナライゼーションの詳細470
  19.4Disposeパターン:オブジェクトのクリーンアップを強制する474
   19.4.1Disposeパターンを実装する型の利用480
   19.4.2C#のusingステートメント484
   19.4.3依存関係からくる興味深い問題486
  19.5弱い参照487
   19.5.1弱い参照の詳細489
  19.6復活491
   19.6.1復活を使ってオブジェクトプールを設計する493
  19.7ジェネレーション496
  19.8プログラムによるガベージコレクタの制御502
  19.9そのほかのガベージコレクタのパフォーマンス上の考慮点505
   19.9.1同期不要のメモリ確保506
   19.9.2スケーラブルな並列ガベージコレクション507
   19.9.3ガベージコレクションの同時実行507
   19.9.4大きなオブジェクト509
  19.10ガベージコレクションの監視509
 
 

第 20 章 CLRのホスティング、AppDomain、リフレクション

511

  20.1メタデータ:.NET Frameworkの基礎511
  20.2CLRホスティング512
  20.3AppDomain514
   20.3.1AppDomain境界を越えてオブジェクトにアクセスする517
   20.3.2AppDomainのイベント519
   20.3.3CLRとAppDomainをホスティングするアプリケーションとその方法520
   20.3.4「Yukon」522
  20.4リフレクションの基本522
  20.5アセンブリに含まれる型をリフレクションで取得する524
  20.6AppDomainのアセンブリをリフレクションで取得する527
  20.7型のメンバをリフレクションで取得する:バインディング528
  20.8アセンブリを明示的にロードする529
   20.8.1アセンブリを「データファイル」としてロードする532
  20.9Exceptionから派生した型の階層構造を表示する533
  20.10アセンブリを明示的にアンロードする:AppDomainのアンロード536
  20.11System.Typeオブジェクトへの参照を取得する538
  20.12型のメンバに対してリフレクションを実行する542
   20.12.1型のインスタンスの作成545
   20.12.2型のメソッドを呼び出す547
   20.12.31度のバインドで何度も起動する551
  20.13型が実装するインターフェイスをリフレクションで取得する557
  20.14リフレクションのパフォーマンス559
 
  索引561
  著者紹介595

この情報は役に立ちましたか。
(残り 1500 文字)