C# 5.0対応とVisual Studioの新バージョンのリリースに合わせて全面的に書き直されたロングセラーの第7版。C# 5.0で飛躍的に使いやすくなった非同期処理についての詳細のほか、Rx(Reactive Extensions)やXAMLといった機能についての解説を大幅に加筆しています。言語仕様からWindows 8アプリ開発のテクニックといった応用にいたるまで、必要な情報がすべてこの1冊に凝縮されています。C#を体系的に網羅したC#プログラマのバイブルです。
プログラミングC# 第7版
Ian Griffiths 著、鈴木 幸敏、風間 一洋、木村 英一、黒川 利明、頃末 和義、佐藤 嘉一、出葉 義治、西山 博泰、稲垣 達夫 訳
- TOPICS
- C#
- 発行年月日
- 2013年11月
- PRINT LENGTH
- 768
- ISBN
- 978-4-87311-650-1
- 原書
- Programming C# 5.0
- FORMAT
目次
訳者まえがき まえがき 1章 C#の基礎 1.1 なぜC#なのか? 1.2 なぜC#ではないのか? 1.3 C#の主な特徴 1.3.1 マネージコードとCLR 1.3.2 専用よりも汎用を 1.3.3 非同期プログラミング 1.4 Visual Studio 1.5 簡単なプログラムの分析 1.5.1 既存のソリューションへのプロジェクトの追加 1.5.2 他からのプロジェクトの参照 1.5.3 単体テストの記述 1.5.4 名前空間 1.5.5 クラス 1.5.6 プログラムエントリポイント 1.5.7 単体テスト 1.6 まとめ 2章 C#の基本的なコーディング 2.1 ローカル変数 2.1.1 スコープ 2.2 ステートメントと式 2.2.1 ステートメント 2.2.2 式 2.3 コメントと空白文字 2.4 プリプロセッサディレクティブ 2.4.1 コンパイルシンボル 2.4.2 #errorと#warning 2.4.3 #line 2.4.4 #pragma 2.4.5 #regionと#endregion 2.5 組み込みデータ型 2.5.1 数値型 2.5.2 ブール型 2.5.3 文字列と文字 2.5.4 オブジェクト 2.6 演算子 2.7 フロー制御 2.7.1 ifステートメントにおけるブール決定 2.7.2 switchステートメントの複数選択 2.7.3 ループ:whileとdo 2.7.4 C言語風のforループ 2.7.5 foreachループによるコレクションの繰り返し処理 2.8 まとめ 3章 型 3.1 クラス 3.1.1 静的メンバ 3.1.2 静的クラス 3.1.3 参照型 3.2 構造体(Struct) 3.2.1 値型を書くべき場合 3.3 メンバ 3.3.1 フィールド 3.3.2 コンストラクタ 3.3.3 メソッド 3.3.4 プロパティ 3.3.5 インデクサ 3.3.6 演算子 3.3.7 イベント 3.3.8 入れ子型 3.4 インタフェース 3.5 列挙(enum) 3.6 その他の型 3.6.1 匿名型 3.7 部分型とメソッド 3.8 まとめ 4章 ジェネリック型 4.1 ジェネリック型 4.2 制約 4.2.1 型制約 4.2.2 参照型制約 4.2.3 値型制約 4.2.4 複数の制約 4.3 ゼロ系の値 4.4 ジェネリックメソッド 4.4.1 型推論 4.5 ジェネリックの内側 4.6 まとめ 5章 コレクション 5.1 配列 5.1.1 配列初期化 5.1.2 キーワードparamsによる可変個引数カウント 5.1.3 検索とソート 5.1.4 多次元配列 5.1.5 コピーとサイズ変更 5.2 List<T> 5.3 リストインタフェースとシーケンスインタフェース 5.4 リストとシーケンスを実装する 5.4.1 イテレータ 5.4.2 Collection<T> 5.4.3 ReadOnlyCollection<T> 5.5 ディクショナリ 5.5.1 ソート済みディクショナリ 5.6 集合 5.7 キューとスタック 5.8 リンクリスト 5.9 並行コレクション 5.10 タプル 5.11 まとめ 6章 継承 6.1 継承と型変換 6.2 インタフェース継承 6.3 ジェネリック 6.3.1 共変性と反変性 6.4 System.Object 6.4.1 すべてのクラスで利用可能なobjectクラスのメソッド 6.5 アクセシビリティと継承 6.6 Virtualメソッド 6.6.1 抽象メソッド 6.7 sealedメソッドとクラス 6.8 基底メンバへのアクセス 6.9 継承とインスタンスの構築 6.10 特別な基底型 6.11 まとめ 7章 オブジェクトの生存期間 7.1 GC(ガベージコレクション) 7.1.1 到達可能性の決定 7.1.2 GCの不慮の死 7.1.3 弱参照 7.1.4 メモリの回収 7.1.5 GCモード 7.1.6 コンパクションの不慮の死 7.1.7 強制GC 7.2 デストラクタとファイナライゼーション 7.2.1 重大なファイナライザ 7.3 IDisposable 7.3.1 Disposeの呼び出しが不要な場合 7.4 ボックス化 7.4.1 Nullable<T>のボックス化 7.5 まとめ 8章 例外 8.1 例外の発生源 8.1.1 APIからの例外 8.1.2 自分のコードからの例外 8.1.3 ランタイムによって検出される失敗 8.2 例外処理 8.2.1 例外オブジェクト 8.2.2 複数catchブロック 8.2.3 tryブロックのネスト 8.2.4 finallyブロック 8.3 例外をスローする 8.3.1 例外を再スロー 8.3.2 素早く失敗させる 8.4 例外型 8.4.1 カスタム例外 8.5 未処理例外 8.5.1 デバッグと例外 8.6 非同期例外 8.7 まとめ 9章 デリゲート、ラムダ、イベント 9.1 デリゲート型 9.1.1 デリゲートの生成 9.1.2 マルチキャストデリゲート 9.1.3 デリゲートの呼び出し 9.1.4 共通デリゲート型 9.1.5 型互換性 9.1.6 構文の裏側 9.2 インラインメソッド 9.2.1 キャプチャされた変数 9.2.2 ラムダと式ツリー 9.3 イベント 9.3.1 標準的なイベントデリゲートパターン 9.3.2 追加と削除を行うメソッドのカスタマイズ 9.3.3 イベントとガベージコレクタ 9.3.4 イベントvs.デリゲート 9.4 デリゲートvs.インタフェース 9.5 まとめ 10章 LINQ 10.1 クエリ式 10.1.1 クエリ式はどのように展開されるか 10.1.2 クエリ式のサポート 10.2 遅延評価 10.3 LINQ、ジェネリックとIQueryable<T> 10.4 標準LINQ演算子 10.4.1 フィルタ 10.4.2 Select 10.4.3 SelectMany 10.4.4 並べ替え 10.4.5 コンテインメントテスト 10.4.6 特定の項目と部分範囲 10.4.7 集約 10.4.8 集合演算子 10.4.9 シーケンス全体を扱ったり、順序を維持するための演算子 10.4.10 グループ化 10.4.11 Join 10.4.12 変換 10.5 シーケンスの生成 10.6 他のLINQの実装 10.6.1 Entity Framework 10.6.2 LINQ to SQL 10.6.3 WCFデータサービスクライアント 10.6.4 Parallel LINQ(PLINQ) 10.6.5 LINQ to XML 10.6.6 Reactive Extensions 10.7 まとめ 11章 Rx(Reactive Extensions) 11.1 Rxと.NETのバージョン 11.2 基本的なインタフェース 11.2.1 IObserver<T> 11.2.2 IObservable<T> 11.3 デリゲートのプッシュとサブスクライブ 11.3.1 デリゲートを使ってオブザーバブルソースを作成する 11.3.2 デリゲートを使ってオブザーバブルソースをサブスクライブする 11.4 シーケンスビルダ 11.4.1 Empty 11.4.2 Never 11.4.3 Return 11.4.4 Throw 11.4.5 Range 11.4.6 Repeat 11.4.7 Generate 11.5 LINQクエリ 11.5.1 グループ化演算子 11.5.2 Join演算子 11.5.3 SelectMany演算子 11.5.4 集約と単一の値を返す演算子 11.5.5 Concat演算子 11.6 Rxクエリ演算子 11.6.1 Merge 11.6.2 Windowing演算子 11.6.3 Scan演算子 11.6.4 Amb演算子 11.6.5 DistinctUntilChanged 11.7 スケジューラ 11.7.1 スケジューラの指定 11.7.2 あらかじめ組み込まれているスケジューラ 11.8 サブジェクト 11.8.1 Subject<T> 11.8.2 BehaviorSubject<T> 11.8.3 ReplaySubject<T> 11.8.4 AsyncSubject<T> 11.9 変換 11.9.1 IEnumerable<T> 11.9.2 .NETイベント 11.9.3 非同期API 11.10 時間を考慮した演算子 11.10.1 Interval 11.10.2 Timer 11.10.3 Timestamp 11.10.4 TimeInterval 11.10.5 Throttle 11.10.6 Sample 11.10.7 Timeout 11.10.8 Windowing演算子 11.10.9 Delay 11.10.10 DelaySubscription 11.11 まとめ 12章 アセンブリ 12.1 Visual Studioとアセンブリ 12.2 アセンブリの構造 12.2.1 .NETメタデータ 12.2.2 リソース 12.2.3 複数ファイルのアセンブリ 12.2.4 PEのその他の特徴 12.3 型の一意性 12.4 アセンブリのロード 12.4.1 明示的なロード 12.4.2 グローバルアセンブリキャッシュ 12.5 アセンブリ名 12.5.1 厳密名 12.5.2 バージョン 12.5.3 カルチャ 12.5.4 プロセッサアーキテクチャ 12.6 ポータブルクラスライブラリ 12.7 パッケージ化による配布 12.7.1 Windows 8 UIスタイルアプリ 12.7.2 ClickOnceとXBAP 12.7.3 SilverlightとWindows Phoneアプリ 12.8 保護 12.9 まとめ 13章 リフレクション 13.1 リフレクション型 13.1.1 アセンブリ 13.1.2 Module 13.1.3 MemberInfo 13.1.4 TypeとTypeInfo 13.1.5 MethodBase、ConstructorInfo、MethodInfo 13.1.6 ParameterInfo 13.1.7 FieldInfo 13.1.8 PropertyInfo 13.1.9 EventInfo 13.2 リフレクションコンテキスト 13.3 まとめ 14章 動的型付け 14.1 動的な型 14.2 dynamicと相互運用性 14.2.1 Silverlightとスクリプト実行可能なオブジェクト 14.2.2 動的な.NET言語 14.3 Dynamicの内側 14.3.1 dynamic型の制約 14.3.2 動的カスタムオブジェクト 14.3.3 ExpandoObject 14.4 dynamicの限界 14.5 まとめ 15章 属性 15.1 属性の適用 15.1.1 属性ターゲット 15.1.2 コンパイラが取り扱う属性 15.1.3 CLRで取り扱う属性 15.2 カスタム属性の定義と消費 15.2.1 属性の型 15.2.2 属性の取得 15.3 まとめ 16章 ファイルおよびストリーム 16.1 Streamクラス 16.1.1 位置およびシーク 16.1.2 フラッシュ 16.1.3 コピー 16.1.4 データ長 16.1.5 ストリームの破棄 16.1.6 非同期操作 16.1.7 具体的なストリーム型 16.2 Windows 8とIRandomAccessStream 16.3 テキスト用の型 16.3.1 TextReaderおよびTextWriter 16.3.2 具体的な読み取り型および書き込み型 16.3.3 エンコーディング 16.4 ファイルとディレクトリ 16.4.1 FileStreamクラス 16.4.2 Fileクラス 16.4.3 Directoryクラス 16.4.4 Pathクラス 16.4.5 FileInfo、DirectoryInfo、FileSystemInfo 16.4.6 特別なフォルダ 16.5 シリアル化 16.5.1 BinaryReaderとBinaryWriter 16.5.2 CLRシリアル化 16.5.3 データコントラクトシリアル化 16.5.4 XmlSerializer 16.6 まとめ 17章 マルチスレッド 17.1 スレッド 17.1.1 スレッド、変数、共有状態 17.1.2 Threadクラス 17.1.3 スレッドプール 17.1.4 スレッドアフィニティとSynchronizationContext 17.2 同期 17.2.1 Monitorとlockキーワード 17.2.2 SpinLock 17.2.3 読み取り/書き込みロック 17.2.4 イベントオブジェクト 17.2.5 Barrier 17.2.6 CountdownEvent 17.2.7 セマフォ 17.2.8 Mutex 17.2.9 Interlocked 17.2.10 遅延初期化 17.2.11 並列実行をサポートするその他のクラス 17.3 Task 17.3.1 TaskおよびTask<T>クラス 17.3.2 継続 17.3.3 スケジューラ 17.3.4 エラー処理 17.3.5 スレッドを使用しないタスクの作成 17.3.6 親子関係 17.3.7 複合タスク 17.4 その他の非同期パターン 17.5 キャンセル 17.6 並列性 17.6.1 Parallelクラス 17.6.2 並列LINQ 17.6.3 TPLデータフロー 17.7 まとめ 18章 非同期言語機能 18.1 非同期機能のキーワード:asyncおよびawait 18.1.1 実行コンテキストと同期コンテキスト 18.1.2 複数の操作およびループ 18.1.3 Taskを返す 18.1.4 ネストされたメソッドにasyncを指定する 18.2 awaitパターン 18.3 エラー処理 18.3.1 引数の検証 18.3.2 単一の例外と複数の例外 18.3.3 並列操作と例外の消失 18.4 まとめ 19章 XAML 19.1 XAMLベースのフレームワーク 19.1.1 WPF 19.1.2 Silverlight 19.1.3 Windows Phone 7 19.1.4 WindowsランタイムとWindow 8スタイルのUIのアプリケーション 19.2 XAMLの基礎 19.2.1 XAMLとXML名前空間 19.2.2 生成されたクラスとコードビハインド 19.2.3 子要素 19.2.4 プロパティ要素 19.2.5 イベント処理 19.2.6 スレッド処理 19.3 レイアウト 19.3.1 プロパティ 19.3.2 パネル 19.3.3 ScrollViewer 19.3.4 レイアウトイベント 19.4 コントロール 19.4.1 コンテンツコントロール 19.4.2 SliderおよびScrollBarコントロール 19.4.3 プログレスコントロール 19.4.4 リストコントロール 19.4.5 コントロールテンプレート 19.4.6 ユーザコントロール 19.5 テキスト 19.5.1 テキストの表示 19.5.2 テキスト編集 19.6 データバインディング 19.6.1 データテンプレート 19.7 グラフィック 19.7.1 図形 19.7.2 ビットマップ 19.7.3 メディア 19.8 スタイル 19.9 まとめ 20章 ASP.NET 20.1 Razor 20.1.1 式 20.1.2 フロー制御 20.1.3 コードブロック 20.1.4 コンテンツを明示的に指定する 20.1.5 Pageクラスおよびオブジェクト 20.1.6 その他のコンポーネントを使用する 20.1.7 レイアウトページ 20.1.8 スタートページ 20.2 Webフォーム 20.2.1 サーバサイドコントロール 20.2.2 式 20.2.3 コードブロック 20.2.4 ページ用の標準的なオブジェクト 20.2.5 ページ用のクラスおよびオブジェクト 20.2.6 その他のコンポーネントを使用する 20.2.7 マスターページ 20.3 MVC 20.3.1 一般的なMVCプロジェクトのレイアウト 20.3.2 モデルの作成 20.3.3 ビューの作成 20.3.4 コントローラーの作成 20.3.5 複数の入力値に対する処理 20.3.6 アクションリンクの生成 20.4 ルーティング 20.5 まとめ 21章 相互運用機能 21.1 ネイティブコードの呼び出し 21.1.1 マーシャリング 21.1.2 32ビットと64ビット 21.1.3 セーフハンドル 21.1.4 セキュリティ 21.2 Platform Invoke 21.2.1 呼び出し規約 21.2.2 テキストの扱い 21.2.3 エントリポイントの名前 21.2.4 COM形式の返り値 21.2.5 Win32でのエラー処理 21.3 COM 21.3.1 RCWの生存期間 21.3.2 メタデータ 21.3.3 スクリプティング 21.4 Windowsランタイム 21.4.1 メタデータ 21.4.2 Windowsランタイム型 21.4.3 バッファ 21.5 Unsafeコード 21.6 C++/CLIとコンポーネント拡張 21.7 まとめ 索引