プログラミングC# 第8版

Book description

C#を体系的に網羅したC#プログラマのバイブルが、C# 8.0に合わせて全面改訂。言語仕様からクラウドも考慮したWebアプリ開発、デスクトップアプリ構築まで、C# 8.0の基本から高度なテクニックまでを詳しく紹介します。C# 8.0では、パターンマッチング、範囲構文、非同期メソッドの大幅拡張、null許容参照をはじめさまざまな新機能の追加と改善がされています。本書はこうした新機能もしっかりとフォロー。詳細な説明と、豊富なサンプルコードを用意し、初心者はもちろん中上級者の要望にも応える一冊です。

Table of contents

  1. 表紙
  2. はじめに
  3. 1章 C#の基礎
  4.  1.1 なぜC#なのか
  5.  1.2 C#の主な特徴
  6.   1.2.1 マネージコードとCLR
  7.   1.2.2 専用よりも汎用を
  8.  1.3 C#標準と実装
  9.   1.3.1 多数のMicrosoft .NET(一時的なものとして)
  10.   1.3.2 .NET Standardによる複数の.NETバージョンへの対応
  11.  1.4 Visual StudioとVisual Studio Code
  12.  1.5 簡単なプログラムの分析
  13.   1.5.1 既存のソリューションへのプロジェクトの追加
  14.   1.5.2 他からのプロジェクトの参照
  15.   1.5.3 外部ライブラリの参照
  16.   1.5.4 単体テストの記述
  17.   1.5.5 名前空間
  18.   1.5.6 クラス
  19.   1.5.7 プログラムエントリポイント
  20.   1.5.8 単体テスト
  21.  1.6 まとめ
  22. 2章 C#の基本的なコーディング
  23.  2.1 ローカル変数
  24.   2.1.1 スコープ
  25.  2.2 ステートメントと式
  26.   2.2.1 ステートメント
  27.   2.2.2 式
  28.  2.3 コメントと空白文字
  29.  2.4 プリプロセッサディレクティブ
  30.   2.4.1 コンパイルシンボル
  31.   2.4.2 #errorディレクティブと#warningディレクティブ
  32.   2.4.3 #lineディレクティブ
  33.   2.4.4 #pragmaディレクティブ
  34.   2.4.5 #nullableディレクティブ
  35.   2.4.6 #regionディレクティブと#endregionディレクティブ
  36.  2.5 基本的なデータ型
  37.   2.5.1 数値型
  38.   2.5.2 ブール型
  39.   2.5.3 文字列と文字
  40.   2.5.4 タプル
  41.   2.5.5 dynamic型
  42.   2.5.6 オブジェクト
  43.  2.6 演算子
  44.  2.7 フロー制御
  45.   2.7.1 ifステートメントにおける真偽の決定
  46.   2.7.2 switchステートメントを使った複数選択
  47.   2.7.3 ループ:whileとdo
  48.   2.7.4 C言語風のforループ
  49.   2.7.5 foreachループによるコレクションの繰り返し処理
  50.  2.8 パターン
  51.   2.8.1 whenを使ってさらに限定する
  52.   2.8.2 式におけるパターン
  53.  2.9 まとめ
  54. 3章 型
  55.  3.1 クラス
  56.   3.1.1 静的メンバ
  57.   3.1.2 静的クラス
  58.   3.1.3 参照型
  59.  3.2 構造体(Struct)
  60.   3.2.1 値型を作るべき場合
  61.   3.2.2 不変性の保証
  62.  3.3 メンバ
  63.   3.3.1 フィールド
  64.   3.3.2 コンストラクタ
  65.   3.3.3 デコンストラクタ
  66.   3.3.4 メソッド
  67.   3.3.5 プロパティ
  68.   3.3.6 インデクサ
  69.   3.3.7 初期化子構文
  70.   3.3.8 演算子
  71.   3.3.9 イベント
  72.   3.3.10 ネストされた型
  73.  3.4 インターフェイス
  74.   3.4.1 デフォルトインターフェイス実装
  75.  3.5 列挙型(enum)
  76.  3.6 その他の型
  77.   3.6.1 匿名型
  78.  3.7 部分型とメソッド
  79.  3.8 まとめ
  80. 4章 ジェネリック型
  81.  4.1 ジェネリック型
  82.  4.2 制約
  83.   4.2.1 型制約
  84.   4.2.2 参照型制約
  85.   4.2.3 値型制約
  86.   4.2.4 アンマネージ制約のある値型
  87.   4.2.5 Not Null制約
  88.   4.2.6 その他の特別な値制約
  89.   4.2.7 複数の制約
  90.  4.3 ゼロ系の値
  91.  4.4 ジェネリックメソッド
  92.   4.4.1 型推論
  93.  4.5 ジェネリックとタプル
  94.  4.6 ジェネリックの詳細
  95.  4.7 まとめ
  96. 5章 コレクション
  97.  5.1 配列
  98.   5.1.1 配列初期化
  99.   5.1.2 検索とソート
  100.   5.1.3 多次元配列
  101.   5.1.4 コピーとサイズ変更
  102.  5.2 List<T>
  103.  5.3 リストインターフェイスとシーケンスインターフェイス
  104.  5.4 リストとシーケンスの実装
  105.   5.4.1 イテレータを使ったIEnumerable<T>の実装
  106.   5.4.2 Collection<T>
  107.   5.4.3 ReadOnlyCollection<T>
  108.  5.5 インデックスと範囲構文を使った要素の指定
  109.   5.5.1 System.Index
  110.   5.5.2 System.Range
  111.   5.5.3 独自の型におけるIndexやRangeのサポート
  112.  5.6 ディクショナリ
  113.   5.6.1 ソート済みディクショナリ
  114.  5.7 集合
  115.  5.8 キューとスタック
  116.  5.9 リンクリスト
  117.  5.10 並列コレクション
  118.  5.11 不変コレクション
  119.   5.11.1 ImmutableArray<T>
  120.  5.12 まとめ
  121. 6章 継承
  122.  6.1 継承と型変換
  123.  6.2 インターフェイス継承
  124.  6.3 ジェネリック
  125.   6.3.1 共変性と反変性
  126.  6.4 System.Object
  127.   6.4.1 すべてのクラスで利用可能なSystem.Objectのメソッド
  128.  6.5 アクセシビリティと継承
  129.  6.6 仮想メソッド
  130.   6.6.1 抽象メソッド
  131.   6.6.2 継承とライブラリのバージョン管理
  132.  6.7 シールメソッドとシールクラス
  133.  6.8 基底メンバへのアクセス
  134.  6.9 継承とインスタンスの構築
  135.  6.10 特別な基底型
  136.  6.11 まとめ
  137. 7章 オブジェクトの生存期間
  138.  7.1 ガベージコレクション
  139.   7.1.1 到達可能性の決定
  140.   7.1.2 誤ってガベージコレクタを無駄にする
  141.   7.1.3 弱参照
  142.   7.1.4 メモリの回収
  143.   7.1.5 ガベージコレクタモード
  144.   7.1.6 ガベージコレクションの一時停止
  145.   7.1.7 誤ってコンパクションを無駄にする
  146.   7.1.8 ガベージコレクションの強制実行
  147.  7.2 デストラクタとファイナライゼーション
  148.  7.3 IDisposable
  149.   7.3.1 破棄を省略できる場合
  150.  7.4 ボックス化
  151.   7.4.1 Nullable<T>のボックス化
  152.  7.5 まとめ
  153. 8章 例外
  154.  8.1 例外の発生源
  155.   8.1.1 APIからの例外
  156.   8.1.2 ランタイムが検出する失敗
  157.  8.2 例外処理
  158.   8.2.1 例外オブジェクト
  159.   8.2.2 複数のcatchブロック
  160.   8.2.3 例外フィルタ
  161.   8.2.4 tryブロックのネスト
  162.   8.2.5 finallyブロック
  163.  8.3 例外のスロー
  164.   8.3.1 例外の再スロー
  165.   8.3.2 素早く失敗させる
  166.  8.4 例外型
  167.   8.4.1 独自に定義した例外
  168.  8.5 未処理例外
  169.  8.6 まとめ
  170. 9章 デリゲート、ラムダ、イベント
  171.  9.1 デリゲート型
  172.   9.1.1 デリゲートの生成
  173.   9.1.2 マルチキャストデリゲート
  174.   9.1.3 デリゲートの呼び出し
  175.   9.1.4 一般的なデリゲート型
  176.   9.1.5 型互換性
  177.   9.1.6 構文の裏側
  178.  9.2 匿名関数
  179.   9.2.1 キャプチャされた変数
  180.   9.2.2 ラムダと式ツリー
  181.  9.3 イベント
  182.   9.3.1 標準的なイベントデリゲートパターン
  183.   9.3.2 追加と削除を行うメソッドのカスタマイズ
  184.   9.3.3 イベントとガベージコレクタ
  185.   9.3.4 イベント対デリゲート
  186.  9.4 デリゲート対インターフェイス
  187.  9.5 まとめ
  188. 10章 LINQ
  189.  10.1 クエリ式
  190.   10.1.1 クエリ式はどのように展開されるか
  191.   10.1.2 クエリ式のサポート
  192.  10.2 遅延評価
  193.  10.3 LINQ、ジェネリック、IQueryable<T>
  194.  10.4 標準LINQ演算子
  195.   10.4.1 フィルタリング
  196.   10.4.2 Select
  197.   10.4.3 SelectMany
  198.   10.4.4 並べ替え
  199.   10.4.5 要素の存在チェック
  200.   10.4.6 特定の項目と部分範囲
  201.   10.4.7 集約
  202.   10.4.8 集合演算
  203.   10.4.9 シーケンス全体に対する順序を維持する演算子
  204.   10.4.10 グループ化
  205.   10.4.11 結合
  206.   10.4.12 変換
  207.  10.5 シーケンスの生成
  208.  10.6 他のLINQ実装
  209.   10.6.1 Entity Framework
  210.   10.6.2 Parallel LINQ(PLINQ)
  211.   10.6.3 LINQ to XML
  212.   10.6.4 Reactive Extensions
  213.   10.6.5 Tx(LINQ to Logs and Traces)
  214.  10.7 まとめ
  215. 11章 Rx(Reactive Extensions)
  216.  11.1 基本的なインターフェイス
  217.   11.1.1 IObserver<T>
  218.   11.1.2 IObservable<T>
  219.  11.2 デリゲートを使った発行とサブスクライブ
  220.   11.2.1 デリゲートを使ったオブザーバブルソースの作成
  221.   11.2.2 デリゲートを使ったオブザーバブルソースのサブスクライブ
  222.  11.3 シーケンスビルダ
  223.   11.3.1 Empty
  224.   11.3.2 Never
  225.   11.3.3 Return
  226.   11.3.4 Throw
  227.   11.3.5 Range
  228.   11.3.6 Repeat
  229.   11.3.7 Generate
  230.  11.4 LINQクエリ
  231.   11.4.1 グループ化演算子
  232.   11.4.2 結合演算子
  233.   11.4.3 SelectMany演算子
  234.   11.4.4 集約演算子と単一値を返すその他の演算子
  235.   11.4.5 Concat演算子
  236.  11.5 Rxクエリ演算子
  237.   11.5.1 Merge
  238.   11.5.2 ウィンドウ化演算子
  239.   11.5.3 Scan演算子
  240.   11.5.4 Amb演算子
  241.   11.5.5 DistinctUntilChanged
  242.  11.6 スケジューラ
  243.   11.6.1 スケジューラの指定
  244.   11.6.2 組み込みスケジューラ
  245.  11.7 サブジェクト
  246.   11.7.1 Subject<T>
  247.   11.7.2 BehaviorSubject<T>
  248.   11.7.3 ReplaySubject<T>
  249.   11.7.4 AsyncSubject<T>
  250.  11.8 変換
  251.   11.8.1 IEnumerable<T>とIAsyncEnumerable<T>
  252.   11.8.2 .NETイベント
  253.   11.8.3 非同期API
  254.  11.9 時間を考慮した演算子
  255.   11.9.1 Interval
  256.   11.9.2 Timer
  257.   11.9.3 Timestamp
  258.   11.9.4 TimeInterval
  259.   11.9.5 Throttle
  260.   11.9.6 Sample
  261.   11.9.7 Timeout
  262.   11.9.8 ウィンドウ化演算子
  263.   11.9.9 Delay
  264.   11.9.10 DelaySubscription
  265.  11.10 まとめ
  266. 12章 アセンブリ
  267.  12.1 アセンブリの構造
  268.   12.1.1 .NETメタデータ
  269.   12.1.2 リソース
  270.   12.1.3 複数ファイルのアセンブリ
  271.   12.1.4 PEのその他の特性
  272.  12.2 型の識別
  273.  12.3 アセンブリのロード
  274.   12.3.1 アセンブリ解決
  275.   12.3.2 明示的なロード
  276.   12.3.3 AssemblyLoadContextを使った分離とプラグイン
  277.  12.4 アセンブリ名
  278.   12.4.1 厳密名
  279.   12.4.2 バージョン
  280.   12.4.3 カルチャ
  281.  12.5 保護
  282.  12.6 まとめ
  283. 13章 リフレクション
  284.  13.1 リフレクション型
  285.   13.1.1 アセンブリ
  286.   13.1.2 モジュール
  287.   13.1.3 MemberInfo
  288.   13.1.4 TypeとTypeInfo
  289.   13.1.5 MethodBase、ConstructorInfo、MethodInfo
  290.   13.1.6 ParameterInfo
  291.   13.1.7 FieldInfo
  292.   13.1.8 PropertyInfo
  293.   13.1.9 EventInfo
  294.  13.2 リフレクションコンテキスト
  295.  13.3 まとめ
  296. 14章 属性
  297.  14.1 属性の適用
  298.   14.1.1 属性ターゲット
  299.   14.1.2 コンパイラが取り扱う属性
  300.   14.1.3 CLRが取り扱う属性
  301.  14.2 属性の定義と利用
  302.   14.2.1 属性型
  303.   14.2.2 属性の取得
  304.  14.3 まとめ
  305. 15章 ファイルとストリーム
  306.  15.1 Streamクラス
  307.   15.1.1 位置とシーク
  308.   15.1.2 フラッシュ
  309.   15.1.3 コピー
  310.   15.1.4 データ長
  311.   15.1.5 破棄
  312.   15.1.6 非同期操作
  313.   15.1.7 具象ストリーム型
  314.   15.1.8 1つの型、多くの振る舞い
  315.  15.2 テキスト用の型
  316.   15.2.1 TextReaderとTextWriter
  317.   15.2.2 具象リーダー型およびライター型
  318.   15.2.3 エンコーディング
  319.  15.3 ファイルとディレクトリ
  320.   15.3.1 FileStreamクラス
  321.   15.3.2 Fileクラス
  322.   15.3.3 Directoryクラス
  323.   15.3.4 Pathクラス
  324.   15.3.5 FileInfo、DirectoryInfo、FileSystemInfo
  325.   15.3.6 既知のフォルダ
  326.  15.4 シリアル化
  327.   15.4.1 BinaryReader、BinaryWriter、BinaryPrimitives
  328.   15.4.2 CLRシリアル化
  329.   15.4.3 JSON.NET
  330.  15.5 まとめ
  331. 16章 マルチスレッド
  332.  16.1 スレッド
  333.   16.1.1 スレッド、変数、共有状態
  334.   16.1.2 Threadクラス
  335.   16.1.3 スレッドプール
  336.   16.1.4 スレッドアフィニティとSynchronizationContext
  337.  16.2 同期
  338.   16.2.1 Monitorクラスとキーワードlock
  339.   16.2.2 SpinLock
  340.   16.2.3 読み取り/書き込みロック
  341.   16.2.4 イベントオブジェクト
  342.   16.2.5 Barrier
  343.   16.2.6 CountdownEvent
  344.   16.2.7 セマフォ
  345.   16.2.8 Mutex
  346.   16.2.9 Interlocked
  347.   16.2.10 遅延初期化
  348.   16.2.11 並列処理をサポートするクラスライブラリのその他のクラス
  349.  16.3 タスク
  350.   16.3.1 TaskクラスとTask<T>クラス
  351.   16.3.2 継続
  352.   16.3.3 スケジューラ
  353.   16.3.4 エラー処理
  354.   16.3.5 スレッド不要の独自定義タスク
  355.   16.3.6 親子関係
  356.   16.3.7 複合タスク
  357.  16.4 その他の非同期パターン
  358.  16.5 キャンセル
  359.  16.6 並列性
  360.   16.6.1 Parallelクラス
  361.   16.6.2 Parallel LINQ
  362.   16.6.3 TPLデータフロー
  363.  16.7 まとめ
  364. 17章 非同期言語機能
  365.  17.1 非同期機能のキーワード:asyncとawait
  366.   17.1.1 実行コンテキストと同期コンテキスト
  367.   17.1.2 複数の操作およびループ
  368.   17.1.3 Taskを返す
  369.   17.1.4 ネストされたメソッドへのasyncの指定
  370.  17.2 awaitパターン
  371.  17.3 エラー処理
  372.   17.3.1 引数の検証
  373.   17.3.2 単一の例外と複数の例外
  374.   17.3.3 並列操作と例外の消失
  375.  17.4 まとめ
  376. 18章 メモリ効率
  377.  18.1 コピー(もしくはコピーしない)
  378.  18.2 Span<T>を使った連続要素の表現
  379.   18.2.1 ユーティリティメソッド
  380.   18.2.2 スタック専用
  381.  18.3 Memory<T>を使った連続要素の表現
  382.  18.4 ReadOnlySequence<T>
  383.  18.5 パイプラインを使ったデータストリームの処理
  384.   18.5.1 ASP.NET CoreにおけるJSONの処理
  385.  18.6 まとめ
  386. 奥付

Product information

  • Title: プログラミングC# 第8版
  • Author(s): Ian Griffiths, 木下 哲也, 鈴木 幸敏
  • Release date: June 2021
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119366

You might also like

book

Javaパフォーマンス

by Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡

本書ではJVMのチューニングとJavaプラットフォームでの問題解決の双方からJavaパフォーマンスの「アート」と「サイエンス」を明らかにします。Javaアプリケーションのテスト手法やベンチマーク測定、パフォーマンス分析に必須のモニタリングツールを学んだうえで、さまざまな性能改善について議論します。JITコンパイル、ガベージコレクションというチューニングが大きな役割を果たす2つの仕組みについて最初に考察します。続いて、Javaプラットフォームのさまざまな側面で高いパフォーマンスを発揮するためのベストプラクティスを紹介。Java 8対応。

book

Python機械学習クックブック

by Chris Albon, 中田 秀基

Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。

book

PythonによるWebスクレイピング 第2版

by Ryan Mitchell, 黒川 利明, 嶋田 健志

ネットからデータを機械的に集め、必要な情報を抽出するWebスクレイピングにより、膨大な情報の中から、検索エンジンだけでは入手できない本当に必要な情報を入手できるようになります。本書は、Webスクレイパーの基礎から、データの抽出、格納、収集後のクリーニング、さらには、JavaScript実行、Seleniumによる自動化、OCRを含めた自然言語処理、並列処理などの高度なトピックに加えて法律面の解説など、Webスクレイピングを実際に行うために必要なプログラミングテクニックと問題に遭遇した際の対処法まで幅広い内容をカバー。豊富な事例から、自分の問題に合ったツールを選択し、解決することが容易となります。Scrapy 1.6、Python 3に対応した待望の改訂版。

book

Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ

by Ken Youens-Clark, 中山 光樹

Rustは速度や安全性、並行性に優れたプログラミング言語で、ゲームエンジン、オペレーティングシステム、ブラウザなど、さまざまな分野で使われています。Rustは学習が難しい言語だと言われていますが、本書では小さなコマンドラインツールを多数書くことを通して、Rustの機能やテスト方法を素早く学ぶことができます。各章では、Rustの重要な概念を取り上げ、関連するコマンドラインツールを作成しながら学習を進めていきます。Rustの初心者から経験者まで、実際にプログラムを書きながらスキルを向上させたい人に最適な一冊です。