C# 4.0対応とVisual Studioの新バージョンのリリースに合わせて全面改訂されたロングセラーの第6版。並行性、動的言語サポート、共変性と反変性など4.0の新機能についての解説が大幅に加筆されています。C#の構文、クラスとオブジェクト、継承とポリモーフィズム、演算子のオーバーロード、構造体、インターフェイス、配列とインデクサ、コレクション、文字列操作と正規表現、例外処理、Windowsフォームの作成など、言語仕様から応用にいたるまで、必要な情報がすべてこの1冊に凝縮されています。C#を体系的に網羅したC#プログラマのバイブル待望の改訂版です。
プログラミングC# 第6版
Ian Griffiths、Matthew Adams、Jesse Liberty 著 、鈴木 幸敏、首藤 一幸、株式会社情報技研 訳
- TOPICS
- Programming
- 発行年月日
- 2011年11月
- PRINT LENGTH
- 816
- ISBN
- 978-4-87311-517-7
- 原書
- Programming C# 4.0, 6th Edition
- FORMAT
関連ファイル
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
第1刷正誤表
プログラミングC#第6版 第1刷正誤表
2013年5月10日更新
|
目次
前書き 1章 C#言語の基礎 1.1 なぜC#? なぜ.NET? 1.2 .NET Frameworkクラスライブラリ 1.3 言語スタイル 1.3.1 結合可能性 1.3.2 マネージコード 1.3.3 連続性とWindows体制 1.4 C# 4.0と.NET 4とVisual Studio 2010 1.5 まとめ 2章 基本的なプログラミングテクニック 2.1 はじめに 2.2 名前空間と型 2.3 プロジェクトとソリューション 2.4 コメントとリージョンと可読性 2.4.1 不適切なコメント 2.4.2 XMLドキュメントコメント 2.5 変数 2.5.1 変数の型 2.6 式およびステートメント 2.6.1 割り当てのステートメント 2.6.2 インクリメント、デクリメント演算子 2.7 選択ステートメントによるフロー制御 2.7.1 ifステートメント 2.7.2 switchおよびcaseステートメント 2.8 繰り返しステートメント 2.8.1 foreachステートメント 2.8.2 forステートメント 2.8.3 whileおよびdoステートメント 2.8.4 ループの終了 2.9 メソッド 2.10 まとめ 3章 クラスと構造体によるアイデアの抽象化 3.1 分割統治 3.1.1 メソッドによる概念の抽象化 3.1.2 オブジェクトとクラスによる概念の抽象化 3.2 クラスの定義 3.2.1 状態をプロパティとして表現する 3.2.2 保護レベル 3.2.3 コンストラクタによる初期化 3.2.4 フィールド:データを配置する場所 3.2.5 フィールドは可変、定数は永遠 3.2.6 読み取り専用フィールドとプロパティ 3.3 列挙型として関連を持つ定数 3.4 値型と参照型 3.5 モーツァルトさん、コンストラクタが多すぎます 3.6 オーバーロード 3.6.1 オーバーロードされたメソッドと名前付き引数、省略可能な引数 3.7 オブジェクト初期化子 3.8 メソッドの定義 3.8.1 staticメソッドの宣言 3.9 staticフィールドとプロパティ 3.9.1 staticコンストラクタ 3.10 まとめ 4章 拡張性とポリモーフィズム 4.1 コンポジションおよび集約によるアソシエーション 4.2 継承とポリモーフィズム 4.3 派生クラスにおけるメソッドの置き換え 4.3.1 基底クラスのメンバをnewで隠す 4.3.2 virtualとoverrideでメソッドを置き換える 4.4 継承と保護 4.5 基底クラスのメソッドの呼び出し 4.6 ここまではよいが越えてはならぬ:sealed 4.7 abstractによるオーバーライドの要求 4.8 すべての型はObjectの派生である 4.8.1 値型のボックス化とボックス化解除 4.9 C#は複数クラスからの継承による実装をサポートしない 4.10 C#は複数のインタフェースの実装をポートしている 4.11 他のインタフェースから派生したインタフェース 4.11.1 明示的なインタフェースの実装 4.12 最後の手段:実行時に型を確認する 4.13 まとめ 5章 デリゲートによる結合性と拡張性の向上 5.1 デリゲートによる関数合成 5.2 Action<T>によるジェネリックアクション 5.3 Predicate<T>を使ったジェネリックPredicate 5.4 匿名メソッドの使用 5.5 ラムダ式によるデリゲートの作成 5.6 プロパティとしてのデリゲート 5.7 関数用のジェネリックデリゲート 5.8 イベントによるクライアントへの通知 5.8.1 多数のイベントを公開する 5.9 まとめ 6章 エラー処理 6.1 いつどのように失敗するか 6.2 エラー値を返す 6.2.1 返り値によるデバッグ 6.3 例外 6.3.1 例外処理 6.3.2 finallyブロックはいつ実行される? 6.3.3 キャッチすべきものを判断する 6.3.4 カスタム例外 6.4 まとめ 7章 配列とリスト 7.1 配列 7.1.1 作成と初期化 7.1.2 カスタム型の配列 7.1.3 配列のメンバ 7.1.4 配列のサイズ 7.2 List<T> 7.2.1 独自のインデクサ 7.2.2 検索とソート 7.3 コレクションとポリモーフィズム 7.3.1 独自のIEnumerable<T>の作成 7.4 まとめ 8章 LINQ 8.1 クエリ式 8.1.1 クエリ式とメソッド呼び出しの比較 8.1.2 拡張メソッドとLINQ 8.1.3 let句 8.2 LINQの概念およびテクニック 8.2.1 デリゲートおよびラムダ式 8.2.2 関数型スタイルと合成 8.2.3 遅延実行 8.3 LINQ演算子 8.3.1 フィルタ処理 8.3.2 並び替え 8.3.3 連結 8.3.4 グループ化 8.3.5 射影 8.3.6 マージ 8.3.7 選択 8.3.8 コレクション全体をテストする 8.3.9 集約 8.3.10 集合演算子 8.3.11 連結 8.3.12 変換 8.4 まとめ 9章 コレクションクラス 9.1 ディクショナリ 9.1.1 一般的なディクショナリの用途 9.1.2 IDictionary<TKey,TValue> 9.1.3 ディクショナリとLINQ 9.2 HashSetとSortedSet 9.3 キュー 9.4 リンクリスト 9.5 スタック 9.6 まとめ 10章 文字列 10.1 文字列とは? 10.2 文字列とChar型 10.3 リテラル文字列とchar 10.3.1 特定文字のエスケープ 10.4 出力用にデータの書式を設定する 10.4.1 標準数値書式文字列 10.4.2 カスタム数値書式文字列 10.4.3 日付と時間 10.4.4 反対の方向:文字列を他の型に変換する 10.4.5 String.Formatによる複合書式設定 10.5 文化ごとの対応 10.5.1 書式指定ルールの詳細 10.6 インデックスによる文字へのアクセス 10.7 文字列は不変 10.8 範囲内の文字を取得する 10.9 文字列の組み立て 10.9.1 再びバラバラにする 10.9.2 大文字と小文字 10.10 テキスト操作 10.10.1 StringBuilderによる変更可能な文字列 10.11 検索と置換 10.12 あらゆる種類の「空」文字列 10.13 空白の削除 10.14 文字種別のチェック 10.15 文字のエンコード 10.15.1 なぜエンコードが問題になるのか 10.15.2 エンコードとデコード 10.15.3 文字列をバイトで表現する理由は? 10.16 まとめ 11章 ファイルおよびストリーム 11.1 ディレクトリとファイルの調査 11.2 ディレクトリの調査 11.3 ファイルパスの操作 11.3.1 パスと現在の作業ディレクトリ 11.4 ファイル情報の調査 11.5 一時ファイルの生成 11.6 ファイルの削除 11.7 特殊フォルダ 11.8 パス要素を安全に連結する 11.9 ディレクトリ階層の作成と安全性 11.10 ディレクトリの削除 11.11 テキストファイルの書き込み 11.11.1 テキストファイル全体を一度に書き込む 11.11.2 StreamWriterによるテキストの書き込み 11.12 ファイルが破損する場面:例外の処理 11.12.1 権限の検索と変更 11.13 ファイルをメモリに読み込む 11.14 ストリーム 11.14.1 ストリーム内を移動する 11.14.2 ストリームにデータを書き込む 11.15 ファイルの読み取り、書き込み、ロック 11.16 FileStreamコンストラクタ 11.16.1 ストリームバッファ 11.16.2 FileStream生成時にアクセス権限を設定する 11.16.3 高度なオプションの設定 11.17 非同期ファイル操作 11.18 分離ストレージ 11.18.1 ストア 11.18.2 テキストの読み取りと書き込み 11.18.3 「分離」の定義 11.18.4 クォータによるユーザストレージの管理 11.18.5 分離ストレージの管理 11.19 ファイルではないストリーム 11.19.1 適応ストリーム:CryptoStream 11.19.2 メモリの中で完結する:MemoryStream 11.19.3 バイナリをBase64エンコーディングによりテキストとして表現する 11.20 まとめ 12章 XML 12.1 XMLの基本(簡単な概要) 12.1.1 要素 12.1.2 XHTML 12.2 XはeXtensible(拡張性)のX 12.3 XML文書の作成 12.3.1 XML要素 12.3.2 XML属性 12.3.3 LINQ to XMLとLINQをリンクさせる 12.4 LINQによるXMLの検索 12.4.1 単一のノードの検索 12.4.2 検索軸 12.4.3 where句 12.5 XMLシリアル化 12.5.1 属性を使用してXMLシリアル化をカスタマイズする 12.6 まとめ 13章 ネットワーク処理 13.1 ネットワーク処理のためのテクノロジーを選択する 13.1.1 クライアントサイドのコードを含んだWebアプリケーション 13.1.2 .NETクライアントと.NETサーバ 13.1.3 .NET製のクライアントとサードパーティ製のWebサービス 13.1.4 サードパーティ製のクライアントと.NET製のサービス 13.2 WCF 13.2.1 WCFプロジェクトの作成 13.2.2 WCFのコントラクト 13.2.3 WCFのテストクライアントおよびテストサーバ 13.2.4 WCFサービスのホスト 13.2.5 WCFクライアントの作成 13.2.6 双方向コントラクトによる双方向通信 13.3 HTTP 13.3.1 WebClient 13.3.2 WebRequestとWebResponse 13.4 ソケット 13.4.1 IPとIPv6、TCP 13.4.2 Socketクラスを使用してサービスに接続する 13.4.3 Socketクラスを使用してサービスを実装する 13.5 その他のネットワーク機能 13.6 まとめ 14章 データベース 14.1 .NETにおけるデータアクセスの展望 14.1.1 古典的ADO.NET 14.1.2 LINQとデータベース 14.1.3 非Microsoft製データアクセステクノロジ 14.1.4 WCF Data Service 14.1.5 Silverlightとデータアクセス 14.1.6 データベース 14.2 Entity Data Model 14.2.1 生成されたコード 14.2.2 マッピングの変更 14.2.3 関連性 14.2.4 継承 14.3 クエリ 14.3.1 LINQ to Entities 14.3.2 Entity SQL 14.3.3 ESQLとLINQの組み合わせ 14.3.4 EntityClient ADO.NETプロバイダ 14.4 オブジェクトコンテキスト 14.4.1 接続の管理 14.4.2 作成、更新、削除 14.4.3 トランザクション 14.4.4 楽観的並行性処理 14.4.5 コンテキストとエンティティの生存期間 14.5 WCF Data Services 14.6 まとめ 15章 アセンブリ 15.1 .NETコンポーネント:アセンブリ 15.1.1 参照 15.1.2 ライブラリを作成する 15.1.3 アクセス保護 15.2 名前付け 15.2.1 署名と厳密名 15.3 ロード 15.3.1 アプリケーションフォルダからのロード 15.3.2 GACからのロード 15.3.3 Silverlight .xapファイルからロードする 15.3.4 明示的なロード 15.4 まとめ 16章 スレッドおよび非同期コード 16.1 スレッド 16.1.1 スレッドとOSスケジューラ 16.1.2 スタック 16.1.3 スレッドプール 16.1.4 スレッドアフィニティとコンテキスト 16.1.5 スレッドに関するよくある誤解 16.1.6 マルチスレッドコードは難しい 16.1.7 マルチスレッドの生存戦略 16.2 同期プリミティブ 16.2.1 モニター 16.2.2 その他のロック型 16.2.3 その他の協調メカニズム 16.2.4 イベント 16.2.5 カウントダウン 16.2.6 BlockingCollection 16.3 非同期プログラミング 16.3.1 非同期プログラミングモデル 16.3.2 イベントベースの非同期パターン 16.3.3 アドホックな非同期操作 16.4 タスク並列ライブラリ 16.4.1 タスク 16.4.2 キャンセル 16.4.3 エラー処理 16.5 データ並列性 16.5.1 並列Forと並列ForEach 16.5.2 並列LINQ 16.6 まとめ 17章 属性およびリフレクション 17.1 属性 17.1.1 属性の型 17.1.2 カスタム属性 17.2 リフレクション 17.2.1 メタデータを検査する 17.2.2 型発見 17.2.3 特殊な型に対するリフレクション 17.2.4 実行時バインディング 17.3 まとめ 18章 ダイナミック 18.1 静的と動的 18.1.1 動的スタイルとCOMオートメーション 18.2 dynamic型 18.2.1 オブジェクトの型とdynamic 18.3 相互運用でないシナリオでdynamicを使う? 18.4 まとめ 19章 COMおよびWin32との相互運用 19.1 ActiveXコントロールをインポートする 19.1.1 .NETでコントロールをインポートする 19.2 相互運用機能アセンブリ 19.2.1 No PIA 19.3 64ビットと32ビット 19.4 P/Invoke 19.5 ポインタ 19.6 C# 4.0相互運用機能の構文の強化 19.6.1 インデクス付きプロパティ 19.6.2 省略可能なref 19.7 まとめ 20章 WPFとSilverlight 20.1 Xamlと分離コード 20.1.1 Xamlとオブジェクト 20.2 要素とコントロール 20.2.1 レイアウトパネル 20.2.2 グラフィックス要素 20.2.3 コントロール 20.2.4 ユーザコントロール 20.3 コントロールテンプレート 20.3.1 スタイル 20.3.2 ビジュアルステートマネージャ 20.4 データバインディング 20.4.1 データテンプレート 20.5 まとめ 21章 ASP.NETプログラミング 21.1 Web Formsの基礎 21.1.1 Web Formsイベント 21.1.2 Webフォームのライフサイクル 21.2 Webアプリケーションを作成する 21.2.1 分離コードファイル 21.2.2 コントロールを追加する 21.2.3 サーバコントロール 21.3 データバインディング 21.3.1 コードを調べる 21.3.2 コントロールとイベントを追加する 21.4 まとめ 22章 Windowsフォーム 22.1 アプリケーションを作成する 22.1.1 バインディングソースを追加する 22.2 コントロール 22.2.1 ドッキングとアンカリング 22.3 データバインディング 22.4 イベント処理 22.5 まとめ 索引