[完全版]究極のC#プログラミング
――新スタイルによる実践的コーディング
――新スタイルによる実践的コーディング
2009年5月22日紙版発売
川俣晶 著
B5変形判/408ページ
定価3,278円(本体2,980円+税10%)
ISBN 978-4-7741-3862-6
ただいま弊社在庫はございません。
書籍の概要
この本の概要
C#は現在ではよく使われている言語であり処理系ですが,Cなどに比べると,まだ書籍の種類は多くありません。案外,言語としてのポイントを絞った,効率的な学習を意図した本というものがないように思われます。そこで,本書の登場です。本書は,とにかく実際にC#を使い倒した著者が本当に必要なことを重点的に解説していますので,いまC#でプログラムを作成している人にも,これから学習したいという人にも有益なものとなっています。C# 3.0により,新しいスタイルで具体的なコードを書く力が養われることを目的とする点が斬新。
こんな方におすすめ
- C#を使った経験はあるが新しいスタイルを知らない方
- 実際に仕事でC#を使っている方
- 実践的なプログラムの書き方を学びたい方
目次
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 新しい繰り返しのスタイル――yield return文とForEachメソッド
- 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を入れたいのか?
- null許容型の美学
- 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.10 オーバーロードの解決
- Exercise 練習問題
Chapter 8 部分クラスと静的クラス
- 8.1 部分クラス(Partial Class)
- 8.2 自動生成コードと安全に共存する
- 8.3 リフレクションと部分クラス
- 8.4 部分クラスを使ううえでの注意点
- 属性
- 修飾子
- 型パラメータと制約
- 基本クラス
- 基本インターフェース
- メンバー
- 所属する名前空間
- 名前のバインディング
- 8.5 静的クラス(Static Class)
- Exercise 練習問題
Chapter 9 プロパティとアクセシビリティ
- 9.1 プロパティアクセサのアクセシビリティ
- 9.2 アクセシビリティ指定の制約
- Exercise 練習問題
Chapter 10 名前空間のエイリアス修飾子と外部アセンブリ
- 10.1 バージョンによるコード破壊
- 10.2 グローバルな名前空間の強制
- 10.3 アセンブリ間の名前競合の解決
- Exercise 練習問題
Chapter 11 フレンドアセンブリ
- 11.1 アセンブリ内部のメンバーへのアクセスを許す
- フレンドアセンブリの使い方
- 11.2 そもそも,アクセスを制限する価値とは?
- Exercise 練習問題
Chapter 12 varによる変数宣言とコレクション初期化子
- 12.1 暗黙的に型指定されるローカル変数
- 12.2 Variant型の悪夢
- 12.3 暗黙的に型を明示する
- 12.4 なぜvarを使うのか?
- 12.5 varが使用できない場面
- 型を知るためのヒントが何もない
- ローカル変数以外
- ラムダ式,匿名メソッド
- null値の初期化
- 12.6 varを活用できる場面
- usingステートメントで使用するvar
- foreachステートメントで使用するvar
- 12.7 暗黙的に型指定されるローカル配列
- 12.8 暗黙に型付けされた配列と型の推測
- 12.9 暗黙に型付けされた配列とnull
- 12.10 コレクション初期化子
- 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.10 オブジェクト初期化子の本質とは?
- 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.10 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.10 条件で絞り込む
- 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.20 内部列挙を伴う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.10 メソッド構文のクエリの接続
- 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 練習問題
Supplement [補遺]ラムダ式を使用した事例
mini Catalog C# 3.0デザインパターンミニカタログ
- カスタマイズ可能なメソッド
- 遅延実行
- nullデリゲート
- 判断条件式
- コンパイル時にチェック可能な名前付きコレクション
- 汎用雑居クラス
- getter/setterによる参照
- 初期化テンプレートオブジェクト
- フラットオブジェクト
- フラットオブジェクトファクトリ
Appendix 1 Visual Studio 2005/2008のコンパイラの新機能
A1.1 C# 2.0コンパイラでの変更点
- /errorreportオプション
- /incrementalオプションの削除
- /keycontainerオプションと/keyfileオプション
- /langversionオプション
- /linkresourceオプション
- /moduleassemblynameオプション
- /pdbオプション
- /platformオプション
A1.2 C# 3.0コンパイラ用の機能
- /win32Manifest
- /noWin32Manifest
Appendix 2 .NET Framework 3.5の新機能――式ツリー
Special Appendix 1 現役C#プログラマーが語るC#を使いこなすツボ
Special Appendix 2 ステート集約プログラミング
おわりに――C# 1.xから3.0への進化とは?
この本に関連する書籍
-
C#プログラマーのための デバッグの基本&応用テクニック
完璧なプログラムなどありません。思わぬ不具合が現れたりもします。プログラミングはバグとの戦いでもあります。ましてビジネスであれば可能な限りバグを潰すことが絶...
-
C# 6 実践的プログラミング[入門]講座
最新版C#6の解説書です。特に従来のC#で開発されてきたプログラムに焦点を当てます。ここで問題になるのは,開発済みのプログラム資産を無駄にしないこと。例として現実...
-
C#プログラミングの冒険 [実践編] ――ただ書けるだけじゃ物足りない!!
プログラミングの入門書は多く,確かにそれを読むことでプログラムを書くことはできるようになりますが,まだ十分ではありません。「書ける」の先にこそ多くの問題が待...
-
裏口からのC# 実践入門 ―バッドノウハウを踏み越えて本物へ!!
比較的使いやすいために,現在,開発現場においては主流のひとつと言って過言ではないC#でも,入門を果たした後でコーディングの力を磨くためには,多くの場合,自ら失...
-
C#による マルチコアのための非同期/並列処理プログラミング
いまやマルチコアのCPUは主流と言えますが,その性能を十分に発揮させるためにはソフトウェアもそれに対応し,非同期処理/並列処理でパフォーマンスを上げなければなり...
-
[改訂新版]パーフェクトC#
C#で.NET開発を行う人へのバイブル的1冊です。概要 基礎から実践までを幅広く学習でき,C#を扱ううえで知っておきたい知識は,この一冊に網羅されています。基本文法やW...
-
Visual C# 2005 [実践] プログラミングテクニック―応用できる基本の書き方
本書は,最新のVisual C# 2005を使ってWindowsアプリケーションを作成するにあたり実際に活用できるテクニックを多数集めて解説しています。しかし,単なるワザ集とは違...
-
@IT技術叢書シリーズ 新プログラミング環境 C#がわかる+使える
C#を含むVisual Studio.NETによって,プログラミングの可能性は大きく広がりました。そして,その分だけプログラマーが学び直さなければならないことも増えたわけです。...