目 次

はしがき
本書の使い方 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