C#を体系的に網羅したC#プログラマのバイブルが、C# 8.0に合わせて全面改訂。言語仕様からクラウドも考慮したWebアプリ開発、デスクトップアプリ構築まで、C# 8.0の基本から高度なテクニックまでを詳しく紹介します。C# 8.0では、パターンマッチング、範囲構文、非同期メソッドの大幅拡張、null許容参照をはじめさまざまな新機能の追加と改善がされています。本書はこうした新機能もしっかりとフォロー。詳細な説明と、豊富なサンプルコードを用意し、初心者はもちろん中上級者の要望にも応える一冊です。
プログラミングC# 第8版
Ian Griffiths 著、木下 哲也 訳、鈴木 幸敏 技術監修
- TOPICS
- Programming , C#
- 発行年月日
- 2021年06月
- PRINT LENGTH
- 800
- ISBN
- 978-4-87311-936-6
- 原書
- Programming C# 8.0
- FORMAT
- Print PDF EPUB
目次
目次 はじめに 1章 C#の基礎 1.1 なぜC#なのか 1.2 C#の主な特徴 1.2.1 マネージコードとCLR 1.2.2 専用よりも汎用を 1.3 C#標準と実装 1.3.1 多数のMicrosoft .NET(一時的なものとして) 1.3.2 .NET Standardによる複数の.NETバージョンへの対応 1.4 Visual StudioとVisual Studio Code 1.5 簡単なプログラムの分析 1.5.1 既存のソリューションへのプロジェクトの追加 1.5.2 他からのプロジェクトの参照 1.5.3 外部ライブラリの参照 1.5.4 単体テストの記述 1.5.5 名前空間 1.5.6 クラス 1.5.7 プログラムエントリポイント 1.5.8 単体テスト 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 #nullableディレクティブ 2.4.6 #regionディレクティブと#endregionディレクティブ 2.5 基本的なデータ型 2.5.1 数値型 2.5.2 ブール型 2.5.3 文字列と文字 2.5.4 タプル 2.5.5 dynamic型 2.5.6 オブジェクト 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 パターン 2.8.1 whenを使ってさらに限定する 2.8.2 式におけるパターン 2.9 まとめ 3章 型 3.1 クラス 3.1.1 静的メンバ 3.1.2 静的クラス 3.1.3 参照型 3.2 構造体(Struct) 3.2.1 値型を作るべき場合 3.2.2 不変性の保証 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.3.9 イベント 3.3.10 ネストされた型 3.4 インターフェイス 3.4.1 デフォルトインターフェイス実装 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.2.5 Not Null制約 4.2.6 その他の特別な値制約 4.2.7 複数の制約 4.3 ゼロ系の値 4.4 ジェネリックメソッド 4.4.1 型推論 4.5 ジェネリックとタプル 4.6 ジェネリックの詳細 4.7 まとめ 5章 コレクション 5.1 配列 5.1.1 配列初期化 5.1.2 検索とソート 5.1.3 多次元配列 5.1.4 コピーとサイズ変更 5.2 List<T> 5.3 リストインターフェイスとシーケンスインターフェイス 5.4 リストとシーケンスの実装 5.4.1 イテレータを使ったIEnumerable<T>の実装 5.4.2 Collection<T> 5.4.3 ReadOnlyCollection<T> 5.5 インデックスと範囲構文を使った要素の指定 5.5.1 System.Index 5.5.2 System.Range 5.5.3 独自の型におけるIndexやRangeのサポート 5.6 ディクショナリ 5.6.1 ソート済みディクショナリ 5.7 集合 5.8 キューとスタック 5.9 リンクリスト 5.10 並列コレクション 5.11 不変コレクション 5.11.1 ImmutableArray<T> 5.12 まとめ 6章 継承 6.1 継承と型変換 6.2 インターフェイス継承 6.3 ジェネリック 6.3.1 共変性と反変性 6.4 System.Object 6.4.1 すべてのクラスで利用可能なSystem.Objectのメソッド 6.5 アクセシビリティと継承 6.6 仮想メソッド 6.6.1 抽象メソッド 6.6.2 継承とライブラリのバージョン管理 6.7 シールメソッドとシールクラス 6.8 基底メンバへのアクセス 6.9 継承とインスタンスの構築 6.10 特別な基底型 6.11 まとめ 7章 オブジェクトの生存期間 7.1 ガベージコレクション 7.1.1 到達可能性の決定 7.1.2 誤ってガベージコレクタを無駄にする 7.1.3 弱参照 7.1.4 メモリの回収 7.1.5 ガベージコレクタモード 7.1.6 ガベージコレクションの一時停止 7.1.7 誤ってコンパクションを無駄にする 7.1.8 ガベージコレクションの強制実行 7.2 デストラクタとファイナライゼーション 7.3 IDisposable 7.3.1 破棄を省略できる場合 7.4 ボックス化 7.4.1 Nullable<T>のボックス化 7.5 まとめ 8章 例外 8.1 例外の発生源 8.1.1 APIからの例外 8.1.2 ランタイムが検出する失敗 8.2 例外処理 8.2.1 例外オブジェクト 8.2.2 複数のcatchブロック 8.2.3 例外フィルタ 8.2.4 tryブロックのネスト 8.2.5 finallyブロック 8.3 例外のスロー 8.3.1 例外の再スロー 8.3.2 素早く失敗させる 8.4 例外型 8.4.1 独自に定義した例外 8.5 未処理例外 8.6 まとめ 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 イベント対デリゲート 9.4 デリゲート対インターフェイス 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 結合 10.4.12 変換 10.5 シーケンスの生成 10.6 他のLINQ実装 10.6.1 Entity Framework 10.6.2 Parallel LINQ(PLINQ) 10.6.3 LINQ to XML 10.6.4 Reactive Extensions 10.6.5 Tx(LINQ to Logs and Traces) 10.7 まとめ 11章 Rx(Reactive Extensions) 11.1 基本的なインターフェイス 11.1.1 IObserver<T> 11.1.2 IObservable<T> 11.2 デリゲートを使った発行とサブスクライブ 11.2.1 デリゲートを使ったオブザーバブルソースの作成 11.2.2 デリゲートを使ったオブザーバブルソースのサブスクライブ 11.3 シーケンスビルダ 11.3.1 Empty 11.3.2 Never 11.3.3 Return 11.3.4 Throw 11.3.5 Range 11.3.6 Repeat 11.3.7 Generate 11.4 LINQクエリ 11.4.1 グループ化演算子 11.4.2 結合演算子 11.4.3 SelectMany演算子 11.4.4 集約演算子と単一値を返すその他の演算子 11.4.5 Concat演算子 11.5 Rxクエリ演算子 11.5.1 Merge 11.5.2 ウィンドウ化演算子 11.5.3 Scan演算子 11.5.4 Amb演算子 11.5.5 DistinctUntilChanged 11.6 スケジューラ 11.6.1 スケジューラの指定 11.6.2 組み込みスケジューラ 11.7 サブジェクト 11.7.1 Subject<T> 11.7.2 BehaviorSubject<T> 11.7.3 ReplaySubject<T> 11.7.4 AsyncSubject<T> 11.8 変換 11.8.1 IEnumerable<T>とIAsyncEnumerable<T> 11.8.2 .NETイベント 11.8.3 非同期API 11.9 時間を考慮した演算子 11.9.1 Interval 11.9.2 Timer 11.9.3 Timestamp 11.9.4 TimeInterval 11.9.5 Throttle 11.9.6 Sample 11.9.7 Timeout 11.9.8 ウィンドウ化演算子 11.9.9 Delay 11.9.10 DelaySubscription 11.10 まとめ 12章 アセンブリ 12.1 アセンブリの構造 12.1.1 .NETメタデータ 12.1.2 リソース 12.1.3 複数ファイルのアセンブリ 12.1.4 PEのその他の特性 12.2 型の識別 12.3 アセンブリのロード 12.3.1 アセンブリ解決 12.3.2 明示的なロード 12.3.3 AssemblyLoadContextを使った分離とプラグイン 12.4 アセンブリ名 12.4.1 厳密名 12.4.2 バージョン 12.4.3 カルチャ 12.5 保護 12.6 まとめ 13章 リフレクション 13.1 リフレクション型 13.1.1 アセンブリ 13.1.2 モジュール 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.1.1 属性ターゲット 14.1.2 コンパイラが取り扱う属性 14.1.3 CLRが取り扱う属性 14.2 属性の定義と利用 14.2.1 属性型 14.2.2 属性の取得 14.3 まとめ 15章 ファイルとストリーム 15.1 Streamクラス 15.1.1 位置とシーク 15.1.2 フラッシュ 15.1.3 コピー 15.1.4 データ長 15.1.5 破棄 15.1.6 非同期操作 15.1.7 具象ストリーム型 15.1.8 1つの型、多くの振る舞い 15.2 テキスト用の型 15.2.1 TextReaderとTextWriter 15.2.2 具象リーダー型およびライター型 15.2.3 エンコーディング 15.3 ファイルとディレクトリ 15.3.1 FileStreamクラス 15.3.2 Fileクラス 15.3.3 Directoryクラス 15.3.4 Pathクラス 15.3.5 FileInfo、DirectoryInfo、FileSystemInfo 15.3.6 既知のフォルダ 15.4 シリアル化 15.4.1 BinaryReader、BinaryWriter、BinaryPrimitives 15.4.2 CLRシリアル化 15.4.3 JSON.NET 15.5 まとめ 16章 マルチスレッド 16.1 スレッド 16.1.1 スレッド、変数、共有状態 16.1.2 Threadクラス 16.1.3 スレッドプール 16.1.4 スレッドアフィニティとSynchronizationContext 16.2 同期 16.2.1 Monitorクラスとキーワードlock 16.2.2 SpinLock 16.2.3 読み取り/書き込みロック 16.2.4 イベントオブジェクト 16.2.5 Barrier 16.2.6 CountdownEvent 16.2.7 セマフォ 16.2.8 Mutex 16.2.9 Interlocked 16.2.10 遅延初期化 16.2.11 並列処理をサポートするクラスライブラリのその他のクラス 16.3 タスク 16.3.1 TaskクラスとTask<T>クラス 16.3.2 継続 16.3.3 スケジューラ 16.3.4 エラー処理 16.3.5 スレッド不要の独自定義タスク 16.3.6 親子関係 16.3.7 複合タスク 16.4 その他の非同期パターン 16.5 キャンセル 16.6 並列性 16.6.1 Parallelクラス 16.6.2 Parallel LINQ 16.6.3 TPLデータフロー 16.7 まとめ 17章 非同期言語機能 17.1 非同期機能のキーワード:asyncとawait 17.1.1 実行コンテキストと同期コンテキスト 17.1.2 複数の操作およびループ 17.1.3 Taskを返す 17.1.4 ネストされたメソッドへのasyncの指定 17.2 awaitパターン 17.3 エラー処理 17.3.1 引数の検証 17.3.2 単一の例外と複数の例外 17.3.3 並列操作と例外の消失 17.4 まとめ 18章 メモリ効率 18.1 コピー(もしくはコピーしない) 18.2 Span<T>を使った連続要素の表現 18.2.1 ユーティリティメソッド 18.2.2 スタック専用 18.3 Memory<T>を使った連続要素の表現 18.4 ReadOnlySequence<T> 18.5 パイプラインを使ったデータストリームの処理 18.5.1 ASP.NET CoreにおけるJSONの処理 18.6 まとめ 索引