最終更新:2009-09-23 (水) 02:10:34 (5291d)
究極のC♯プログラミング
Top / 究極のC♯プログラミング
http://www.atmarkit.co.jp/fdotnet/extremecs/index/index.html
Part 1 - C♯ 3.0―“新しい”プログラミングの可能性
Chapter 1 - C♯ 3.0らしいプログラミングとは?
- 1.1 - 意外性あり? 本書で解説すること
- 1.2 - C♯ 3.0らしいソースコードとは?
- 1.3 - コードの遅延実行という例
- 1.4 - インターフェース?との比較
- 1.5 - 後退するクラスの立場
- 1.6 - クラスベース?とプロトタイプベース?
- 1.7 - クラスベース?の問題点
- 1.8 - JavaScriptとの相違点
- 1.9 - まとめ―プログラマよ、心してかかれ!
Part 2 - 新しいプログラミングへ―その助走
Chapter 2 - ジェネリック
- 2.1 - ジェネリックとは何か?
- 2.2 - 新しいコレクションの紹介
- 2.3 - 新しいコレクションクラス?―LinkedList?クラス
- 2.4 - 新しいコレクションクラス?―SortedDictionary?クラス
- 2.5 - ジェネリックコレクション?の使い方
- 2.6 - ジェネリックメソッドと型推論
- 2.7 - HashtableクラスとDictionaryクラスの非互換性
- 2.8 - ジェネリックなクラスを自作する
- 2.9 - 制約?の付いたジェネリックなクラス
- Exercise - 練習問題
Chapter 3 - 新しい繰り返し?のスタイル
- 3.1 - 「繰り返し」という古くて新しい問題
- 3.2 - 数を数えるというサンプル
- 3.3 - C♯ 1.xによるRangeクラスの実装
- 3.4 - C♯ 3.0によるRangeクラスの実装
- 3.5 - yield break文による中断
- 3.6 - yieldは予約語ではない
- 3.7 - 1つのクラスに複数の列挙機能を付ける
- 3.8 - 自動的に作られるオブジェクトと二重利用
- 3.9 - catchできない制約
- 3.10 - 制約の真相―見た目と違う真実の姿
- 3.11 - ForEach?メソッドを使う別解
- 3.12 - 性能比較
- Exercise - 練習問題
Chapter 4 - Find?メソッド
- 4.1 - MATステートメント?の思い出
- 4.2 - ForEach?メソッドのbreak問題
- 4.3 - ForEach?だけではない繰り返しメソッド
- 4.4 - 複数の結果がほしい場合
- 4.5 - 偉大なる前進とは何か?
- 4.6 - そして,LINQへ続く
- Exercise - 練習問題
Chapter 5 - null許容型?
- 5.1 - null許容型?とは何か?
- 5.2 - なぜnullを入れたいのか?
- 5.3 - null許容型?の内部構造
- 5.4 - null合体演算子?
- 5.5 - is演算子?の挙動に注意
- 5.6 - 3値論理型?として使用できるbool?型
- 5.7 - nullを許容するとパフォーマンスに影響するか?
- Exercise - 練習問題
Part 3 - より新しいプログラミングへ
Chapter 6 - ラムダ式(前編)
- 6.1 - おかずでもデザートでもなく“ご飯”
- 6.2 - ラムダ式とは何か?
- 6.3 - ラムダ式は上位スコープにアクセスできる
- 6.4 - キャプチャ?される変数
- 6.5 - 注意を要するキャプチャの本質
- 6.6 - デリゲートの共変性?と反変性?
- 6.7 - デリゲートインスタンス?の等価性?
- 6.8 - ラムダ式で継承を置き換えてみる
- 6.9 - C♯ 2.0と匿名メソッド
- Exercise - 練習問題
Chapter 7 - ラムダ式(後編)
- 7.1 - ラムダ式は何をもたらすか?
- 7.2 - ラムダ式と匿名メソッドの違い
- 7.3 - ステートメント型のラムダ
- 7.4 - 式形式のラムダの可能性
- 7.5 - 型指定を省略できる場合,できない場合
- 7.6 - 何もしないラムダ式
- 7.7 - ラムダ式の使用例
- 7.8 - ラムダ式のさまざまなバリエーション
- 7.9 - ジェネリックメソッドと型推論
- 7.1 - オーバーロードの解決
- Exercise - 練習問題
Chapter 8 - 部分クラス?と静的クラス?
- 8.1 - 部分クラス?(Partial Class)
- 8.2 - 自動生成コード?と安全に共存する
- 8.3 - リフレクションと部分クラス?
- 8.4 - 部分クラス?を使ううえでの注意点
- 8.5 - 静的クラス?(Static Class)
- Exercise - 練習問題
Chapter 9 - プロパティとアクセシビリティ
Chapter 10 - 名前空間のエイリアス修飾子?と外部アセンブリ?
Chapter 11 - フレンドアセンブリ?
Chapter 12 - varによる変数宣言?とコレクション初期化子?
- 12.1 - 暗黙的に型指定されるローカル変数
- 12.2 - Variant?型の悪夢
- 12.3 - 暗黙的に型を明示する
- 12.4 - なぜvarを使うのか?
- 12.5 - varが使用できない場面
- 12.6 - varを活用できる場面
- 12.7 - 暗黙的に型指定されるローカル配列?
- 12.8 - 暗黙に型付けされた配列と型の推測
- 12.9 - 暗黙に型付けされた配列とnull
- 12.1 - コレクション初期化子?
- 12.11 - Dictionaryクラスとコレクション初期化子?
- 12.12 - 引数が2つのAddメソッドとコレクション初期化子?
- Exercise - 練習問題
Chapter 13 - 自動実装?と自動定義?
- 13.1 - ラムダ式を使ったダーティテク―refの代役
- 13.2 - 自動実装プロパティ
- 13.3 - 自動実装プロパティのアクセス制御
- 13.4 - 読み出し専用,書き込み専用はない
- 13.5 - “名無し”のクラス―匿名型
- 13.6 - 匿名型の等価性
- 13.7 - 匿名型の簡易記法
- 13.8 - 匿名型の使用目的
- 13.9 - オブジェクト初期化子
- 13.1 - オブジェクト初期化子の本質とは?
- 13.11 - コレクションはreadonlyでも初期化できる
- 13.12 - オブジェクト初期化子の使用例
- Exercise - 練習問題
Chapter 14 - 拡張メソッド
- 14.1 - C♯ 2.0プログラマの悲劇
- 14.2 - Allメソッドを利用するのに必要な記述
- 14.3 - 拡張メソッドの概要
- 14.4 - スイッチなしで機能する例
- 14.5 - sealedクラスを拡張する
- 14.6 - 拡張メソッドはオブジェクト内部に手出しできない
- 14.7 - 拡張メソッドはオブジェクトの振る舞いを変更できない
- 14.8 - 拡張メソッドが安全である理由
- 14.9 - メソッド呼び出し?と型の関係
- 14.1 - thisの正体
- 14.11 - 拡張メソッドを使用すべきとき
- 14.12 - コレクションに拡張されるメソッド
- 14.13 - なぜ「using System.Linq;」なのか?
- Exercise - 練習問題
Part 4 - さらに新しい可能性へ
Chapter 15 - はじめに - LINQとクエリ式
- 15.1 - LINQの面白さ
- 15.2 - LINQとは何か?
- 15.3 - 「値の集まり」に対する演算
- 15.4 - なぜLINQなのか?
- 15.5 - 最も基本的なLINQ
- 15.6 - LINQの本質は列挙
- 15.7 - LINQを使ううえでの注意点
- 15.8 - クエリ結果を加工する
- 15.9 - 複数のソースからクエリする
- 15.1 - 条件で絞り込む
- 15.11 - 一部項目のみselectする
- 15.12 - シンプルなソート
- 15.13 - クエリ?の接続
- 15.14 - クエリ結果?のグループ化
- 15.15 - 複数ソースを関連付けるjoin句
- 15.16 - from句とjoin句のパフォーマンス
- 15.17 - join句のグループ化結合?
- 15.18 - join句の左外部結合?
- 15.19 - 単独で使うDefaultIfEmpty?メソッド
- 15.2 - 内部列挙を伴うfrom句の二重使用
- 15.21 - let句
- 15.22 - クエリ?のインスタンス化
- 15.23 - クエリ結果の個数を得る
- 15.24 - Anyメソッドと存在チェック
- 15.25 - まとめ―本章の最初のサンプルを通して
- 列挙できるものはクエリできるもの
- ソートやグループ分けができる
- 複数のソースを処理できる
- フィルタリングできる
- “結果”を自由に作り出せる
- Exercise - 練習問題
Chapter 16 - LINQとメソッド構文?
- 16.1 - 予約語のエスケープ
- 16.2 - メソッド構文?のLINQ
- 16.3 - クエリ式とメソッド構文?の違い
- 16.4 - 絞り込みと結果の生成
- 16.5 - 最初の事例の別解
- 16.6 - メソッド構文?でのみ可能なクエリ?
- 16.7 - メソッド構文?のソート
- 16.8 - orderbyの比較オブジェクト
- 16.9 - メソッド構文?の複数のソースからクエリする
- 16.1 - メソッド構文?のクエリの接続
- 16.11 - クエリ結果のグループ化
- 16.12 - メソッド構文?で複数のソースを関連付ける
- 16.13 - メソッド構文?のグループ化結合
- 16.14 - メソッド構文?の左外部結合
- 16.15 - メソッド構文?のlet句
- Exercise - 練習問題
Chapter 17 - LINQ to SQL
- 17.1 - 効率的に列挙可能にするという問題
- 17.2 - SQL Serverのワナ
- 17.3 - LINQ to SQLという突破口
- 17.4 - LINQ to SQLのサンプル
- 17.5 - LINQ to SQLとメソッド構文?
- 17.6 - LINQ to SQLのまとめ
- Exercise - 練習問題
Chapter 18 - LINQ to XML?
- 18.1 - LINQプロバイダ?を導入する別の理由
- 18.2 - XML最大の災厄
- 18.3 - DOMの憂鬱
- 18.4 - E4XのXMLサポート
- 18.5 - LINQ to XML?というブレークスルー
- 18.6 - 単純化されたXML文書生成
- 18.7 - まとめ―ストレスレスなXMLの扱い
- Exercise - 練習問題
Chapter 19 - 小さな改善とコンパイラの新機能
- 19.1 - インライン警告制御?「♯pragma warning」
- 19.2 - 部分メソッド定義?
- 19.3 - 固定サイズバッファ?
- 19.4 - volatileがIntPtr型およびUIntPtr?型へ適用できる
- Exercise - 練習問題
補遺] - ラムダ式を使用した事例
Appendix 1 - Visual Studio 2005/Visual Studio 2008のコンパイラの新機能
- A1.1 - C♯ 2.0コンパイラでの変更点
- /errorreportオプション
- /incrementalオプションの削除
- /keycontainerオプションと/keyfileオプション
- /langversionオプション
- /linkresourceオプション
- /moduleassemblynameオプション
- /pdbオプション
- /platformオプション
- A1.2 - C♯ 3.0コンパイラ用の機能
- /win32Manifest
- /noWin32Manifest