はしがき |
|
|
|
本書の使い方 |
12 |
|
|
|
|
第 1 章 C# の特徴と実装環境 |
13 |
|
|
1-1 C# の特徴 |
15 |
1-1-1 C# とは? 15 |
|
1-1-2 C# のプログラミング学習で必要なこと 17 |
|
1-2 .NET Framework |
21 |
1-2-1 .NET Platform の中の .NET Framework 21 |
|
1-2-2 .NET Framework の構成要素 24 |
|
1-3 .NET アプリケーション |
29 |
1-3-1 プログラムファイルの構造 29 |
|
1-3-2 アセンブリ(プログラムの最小管理単位) 30 |
|
1-3-3 複数言語間の相互運用 32 |
|
1-3-4 複数バージョンの管理 32 |
|
1-3-5 コードレベルのセキュリティ 33 |
|
1-4 開発環境 |
35 |
1-4-1 .NET Framework SDK 35 |
|
1-4-2 Visual Studio.NET 36 |
|
第 1 章のまとめ |
38 |
|
|
|
|
第 2 章 基本構文 |
39 |
|
|
2-1 構文の基本的特徴 |
41 |
2-1-1 括弧 {} で構成されるブロック 41 |
|
2-1-2 各文の特徴 44 |
|
2-1-3 Main メソッド 46 |
|
2-1-4 コメント 48 |
|
2-1-5 ドキュメンテーションコメント 49 |
|
2-2 変数と定数 |
52 |
2-2-1 C# で予約されたデータ型 52 |
|
2-2-2 変数の宣言 55 |
|
2-2-3 ローカル変数とメンバ変数 57 |
|
2-2-4 定数表記 59 |
|
2-3 値型と参照型 |
63 |
2-3-1 2 種類のデータ型 63 |
|
2-3-2 値型とは? 64 |
|
2-3-3 参照型とは? 65 |
|
2-4 配 列 |
69 |
2-4-1 C# の配列 69 |
|
2-4-2 配列の変数宣言とメモリ確保 70 |
|
2-4-3 配列変数による参照と配列の解放 74 |
|
2-4-4 多次元配列 79 |
|
2-4-5 多段階配列 80 |
|
2-4-6 配列サイズの取得 83 |
|
2-5 文字列 |
86 |
2-5-1 参照型としての文字列 86 |
|
2-5-2 文字列の連結 87 |
|
2-5-3 文字の抽出 89 |
|
2-5-4 文字列の整形 90 |
|
2-6 演算子 |
94 |
2-6-1 C# の演算子 94 |
|
2-6-2 インクリメントとデクリメント 96 |
|
2-6-3 ビット演算 98 |
|
2-6-4 条件式に関するもの 102 |
|
2-6-5 代入をともなう演算 104 |
|
2-7 キャストによるデータ変換 |
106 |
2-7-1 キャスト 106 |
|
2-7-2 Boxing 108 |
|
2-7-3 Unboxing 110 |
|
2-8 基本的なメソッド定義と呼び出し |
111 |
2-8-1 基本的なメソッドの構文 111 |
|
2-8-2 引数と戻り値 113 |
|
2-8-3 値型の引数と参照型の引数 116 |
|
2-9 列挙型( enum ) |
121 |
2-9-1 列挙型とは? 121 |
|
2-9-2 列挙型の定義と使用 122 |
|
2-10 ネームスペース( namespace ) |
125 |
2-10-1 ネームスペースの定義 125 |
|
2-10-2 ドットによるネームスペースの指定 126 |
|
2-10-3 using によるネームスペースの指定 127 |
|
2-10-4 ネームスペースとアセンブリの違い 128 |
|
第 2 章のまとめ |
130 |
|
|
|
|
第 3 章 さまざまな制御構造 |
133 |
|
|
3-1 条件分岐 |
135 |
3-1-1 if 文 135 |
|
3-1-2 参照型の比較 140 |
|
3-1-3 文字列の比較 143 |
|
3-1-4 switch 文 146 |
|
3-1-5 switch 文による文字列評価 150 |
|
3-2 ループ |
152 |
3-2-1 while 文 152 |
|
3-2-2 do 文 154 |
|
3-2-3 for 文 156 |
|
3-2-4 foreach 文 159 |
|
3-2-5 ネスト(入れ子) 161 |
|
3-2-6 ループの制御( break 文と continue 文) 162 |
|
3-3 例外処理 |
167 |
3-3-1 checked と unchecked 167 |
|
3-3-2 try ~ catch ~ finally 169 |
|
3-3-3 catch ブロックの使い方 175 |
|
3-3-4 finally ブロックの使い方 177 |
|
3-3-5 例外の発生 180 |
|
3-3-6 メソッド呼び出しなどにともなう例外の捕捉 182 |
|
第 3 章のまとめ |
187 |
|
|
|
|
第 4 章 クラスの定義と実装 |
189 |
|
|
4-1 クラスの基本 |
191 |
4-1-1 オブジェクトとは何か? 191 |
|
4-1-2 オブジェクト指向プログラミングの目的 195 |
|
4-1-3 クラスとインスタンス 197 |
|
4-1-4 クラスの定義 200 |
|
4-1-5 もう 1 つのクラスの定義 203 |
|
4-1-6 インスタンスの作成とアクセス方法 206 |
|
4-2 フィールド |
212 |
4-2-1 フィールドの定義 212 |
|
4-2-2 インスタンスフィールドとスタティックフィールド 213 |
|
4-2-3 フィールドの参照 215 |
|
4-3 メソッド |
217 |
4-3-1 基本的なメソッド定義と呼び出し 217 |
|
4-3-2 インスタンスメソッドとスタティックメソッド 221 |
|
4-3-3 さまざまなメソッド呼び出し 225 |
|
4-3-4 メソッドのオーバーロード 230 |
|
4-3-5 コンストラクタ 232 |
|
4-3-6 デストラクタ 237 |
|
4-3-7 演算子のオーバーロード 239 |
|
4-3-8 高度なパラメータ(入出力引数・出力引数) 243 |
|
4-4 プロパティ |
248 |
4-4-1 プロパティとは? 248 |
|
4-4-2 プロパティの定義方法 249 |
|
4-4-3 プロパティの用途 252 |
|
4-4-4 読み取り専用のデータ 253 |
|
4-5 インデクサ |
259 |
4-5-1 インデクサとは? 259 |
|
4-5-2 インデクサの定義方法 260 |
|
4-5-3 さまざまなインデクサの利用法 263 |
|
4-6 クラスの継承 |
267 |
4-6-1 継承とは? 267 |
|
4-6-2 継承の書き方 270 |
|
4-6-3 メソッドのオーバーライド 274 |
|
4-6-4 継承におけるコンストラクタ 278 |
|
4-6-5 クラス継承の特徴 284 |
|
4-6-6 メソッドの隠蔽 293 |
|
4-6-7 クラス継承の禁止 295 |
|
4-7 アクセス制御 |
297 |
4-7-1 クラスメンバのアクセス制御 297 |
|
4-7-2 クラスのアクセス制御 304 |
|
4-7-3 入れ子クラス(ネストクラス)のアクセス 306 |
|
4-8 抽象クラス |
312 |
4-8-1 抽象クラスとは? 312 |
|
4-8-2 抽象クラスの記述方法 313 |
|
4-9 デリゲーション |
318 |
4-9-1 イベントの使用 318 |
|
4-9-2 デリゲーション 319 |
|
4-9-3 受信側のデリゲーションの実装 322 |
|
4-9-4 送信側のデリゲーションの実装 325 |
|
4-9-5 Base クラスライブラリにみるデリゲーション 335 |
|
4-10 インタフェース |
341 |
4-10-1 インタフェースとは? 341 |
|
4-10-2 インタフェースの定義 342 |
|
4-10-3 インタフェースの実装 344 |
|
4-10-4 インタフェースの使い方 346 |
|
第 4 章のまとめ |
349 |
|
|
|
|
第 5 章 オブジェクト指向におけるクラスの活用 |
353 |
|
|
5-1 クラス設計のヒント |
355 |
5-1-1 オブジェクトの見極め 355 |
|
5-1-2 オブジェクト間の関係・相互作用の考察 359 |
|
5-1-3 オブジェクトのメソッド 362 |
|
5-1-4 スタティックなメンバ 371 |
|
5-1-5 抽象化の利用 372 |
|
5-1-6 抽象クラスの利用 385 |
|
5-1-7 実装を分離するヒント 391 |
|
5-2 継承による再利用 |
396 |
5-2-1 継承が意味すること 396 |
|
5-2-2 多重継承が意味すること 398 |
|
5-3 多態性の実装 |
400 |
5-3-1 多態性とは? 400 |
|
5-3-2 クラス継承による多態性 401 |
|
5-3-3 インタフェースによる多態性 408 |
|
5-4 疎結合の実現 |
411 |
5-4-1 インタフェースによる疎結合 411 |
|
5-4-2 デリゲーションによる疎結合 416 |
|
5-4-3 疎結合を考慮したライブラリ設計 419 |
|
第 5 章のまとめ |
425 |
|
|
|
|
第 6 章 .NET アプリケーション作成における関連知識 |
427 |
|
|
6-1 条件付きコンパイル |
429 |
6-1-1 プリプロセッサディレクティブによる条件付きコンパイル 429 |
|
6-1-2 シンボルの定義と定義の取り消し 433 |
|
6-1-3 conditional 属性による条件付きコンパイル 436 |
|
6-2 属性の指定 |
440 |
6-2-1 属性( attribute )とは? 440 |
|
6-2-2 属性の記述方法 441 |
|
6-3 アセンブリの実装 |
444 |
6-3-1 アセンブリの作成 444 |
|
6-3-2 共有アセンブリの作成 446 |
|
6-3-3 コンパイル時の参照設定 450 |
|
6-3-4 実行時のアセンブリのバインド 452 |
|
6-4 既存環境との相互運用性 |
458 |
6-4-1 Win32 API へのアクセス 458 |
|
6-4-2 COM コンポーネントの呼び出し 460 |
|
6-4-3 .NET Framework クラスを COM として公開 463 |
|
6-5 コードアクセスセキュリティ |
466 |
6-5-1 コードアクセスセキュリティ 466 |
|
6-5-2 セキュリティポリシー 467 |
|
6-5-3 アクセス権のリクエスト( Request ) 469 |
|
6-6 ロールベースセキュリティ |
472 |
6-6-1 ロールベースセキュリティ 472 |
|
6-6-2 Principal オブジェクト 473 |
|
6-6-3 Principal オブジェクトのカスタマイズ 477 |
|
第 6 章のまとめ |
480 |
|
|
参考文献 |
483 |
|
|
索 引 |
485 |