目次
Chapter 1 基本文法
- 001 様々な型のローカル変数を宣言したい
 - 002 constキーワードで定数を利用したい
 - 003 文字列リテラルで改行コードやタブコードを記述したい
 - 004 逐語的リテラル文字列を利用したい
 - 005 文字列補間を使い文字列を整形したい
 - 006 if文で条件分岐処理を書きたい
 - 007 if文で多分岐処理を書きたい
 - 008 switch文で多分岐処理を書きたい
 - 009 AND ORなどの条件論理演算をしたい
 - 010 条件に応じて値を変えたい(条件演算子?:)
 - 011 ある値を他の型に型変換(キャスト)したい
 - 012 for,while,do-while文で繰り返し処理を記述したい
 - 013 foreachでコレクションの要素を順に処理したい
 - 014 繰り返しの途中で処理をスキップし次の繰り返しに移りたい
 - 015 繰り返し処理を中断したい
 
Chapter 2 数値演算
- 016 数値の加減乗除および剰余を求めたい
 - 017 インクリメント演算子(++),デクリメント演算子(--)を使いたい
 - 018 intやdoubleの最小値,最大値を求めたい
 - 019 絶対値を求めたい
 - 020 べき乗を求めたい
 - 021 切り捨て,切り上げをしたい
 - 022 指定した位置で切り捨て,切り上げをしたい
 - 023 四捨五入したい
 - 024 数値演算時のオーバーフローを検知したい
 - 025 ふたつの浮動小数点数が等しいか比較したい
 - 026 ランダムな値を生成したい
 - 027 ビット演算をしたい
 - 028 Nビット目をOn/Offしたい
 - 029 Nビット目の状態を調べたい
 
Chapter 3 文字列処理
- 030 文字列を数値に変換したい
 - 031 数値を文字列に変換したい
 - 032 書式を指定して整数を文字列に変換したい
 - 033 数値を桁数を指定して文字列化したい
 - 034 文字列がnullまたは空文字列であるか調べたい
 - 035 文字列の中に指定した部分文字列があるか調べたい
 - 036 文字列が指定した文字列で開始/終了しているかを調べたい
 - 037 ふたつの文字列の先頭N文字が一致しているかを調べたい
 - 038 大文字小文字を区別せずにふたつの文字列を比較したい
 - 039 文字列の両端にある空白を取り除きたい
 - 040 文字列の中で指定した部分文字列が最初に現れる位置を求めたい
 - 041 文字列から部分文字列を取得したい
 - 042 文字列から指定した範囲の文字を取り除きたい
 - 043 文字列の一部を別の文字列に置き換えたい
 - 044 指定した位置に文字列を挿入したい
 - 045 文字列を大文字あるいは小文字に変換したい
 - 046 文字列の中の各文字を1文字ずつ操作したい
 - 047 指定した文字数になるまで文字列の先頭に空白を埋め込みたい
 - 048 文字列を指定した区切り文字で分割したい
 - 049 StringBuilderを使い複数の文字列を高速に連結したい
 - 050 StringBuilderを使い文字列の置換処理をしたい
 - 051 文字列補間内でエスケープ文字を無効にしたい
 - 052 コレクションの要素を指定した区切り文字で連結したい
 - 053 文字列と文字配列を相互変換したい
 - 054 文字列とbyte配列を相互変換したい
 - 055 サロゲートペア文字に対応した文字列処理を行いたい
 - 056 カルチャに依存しない文字列比較を行いたい
 
Chapter 4 日付時刻処理
- 057 本日の日付や現在の時刻を取得したい
 - 058 DateTimeオブジェクトから年月日時分秒ミリ秒を取り出したい
 - 059 曜日を取得したい
 - 060 N日後,N日前を求めたい
 - 061 Nか月後,Nか月前を求めたい
 - 062 ふたつの日時を比較したい
 - 063 うるう年かどうか調べたい
 - 064 1月1日からの年間積算日を求めたい
 - 065 指定した月の月末日を求めたい
 - 066 ふたつの日時の差を求めたい
 - 067 日付文字列をDateTime型に変換したい
 - 068 日付,時刻を様々な書式で文字列化したい
 - 069 和暦の元号と年を求めたい
 - 070 元号を表す序数から元号(文字列)を求めたい
 - 071 日付を和暦表示したい
 - 072 カルチャを指定して日時を文字列化したい
 
Chapter 5 コレクション
- 073 配列を利用したい
 - 074 コレクションの要素を順に取り出したい
 - 075 配列の要素を同じ値で埋めたい
 - 076 配列の順序を逆順にしたい
 - 077 配列の順序を昇順に並べ替えたい
 - 078 Comparison<T>を使用して配列を並べ替えたい
 - 079 2次元配列を使いたい
 - 080 ジャグ配列を使いたい
 - 081 List<T>を使いたい
 - 082 List<T>を宣言と同時に初期化したい
 - 083 List<T>に複数の要素を一度に追加したい
 - 084 List<T>から条件に一致した要素を削除したい
 - 085 List<T>の要素の順序を反転させたい
 - 086 List<T>の要素を昇順に並べ替えたい
 - 087 Comparison<T>を使用してList<T>を並べ替えたい
 - 088 List<T>内を高速にサーチしたい
 - 089 ForEachメソッドですべての要素を順に処理したい
 - 090 List<T>を読み取り専用にしたい
 - 091 Dictionary<TKey,TValue>を利用したい
 - 092 Dictionary<TKey,TValue>内のすべてのキーを参照したい
 - 093 HashSet<T>を利用したい
 - 094 HashSet<T>で集合演算を行いたい
 - 095 Stack<T>を利用したい
 - 096 Queue<T>を利用したい
 
Chapter 6 クラスと構造体の基礎
- 097 クラスを定義したい
 - 098 プロパティを定義したい
 - 099 読み取り専用プロパティを定義したい
 - 100 プロパティに初期値を設定したい
 - 101 バッキングフィールドを利用したプロパティを定義したい
 - 102 メソッドを定義したい
 - 103 同名のメソッドを複数定義(オーバーロード)したい
 - 104 可変長引数を持つメソッドを定義したい
 - 105 メソッドを式形式で簡潔に書きたい
 - 106 コンストラクターを定義したい
 - 107 複数のコンストラクターを定義したい
 - 108 クラスを継承したい
 - 109 静的クラスを定義したい
 - 110 構造体を定義したい
 - 111 匿名型を使いたい
 - 112 オブジェクトを複製したい
 
Chapter 7 列挙型
- 113 列挙型を定義したい
 - 114 列挙型に定義されている値をすべて列挙したい
 - 115 列挙型と数値を相互に変換したい
 - 116 列挙型と文字列を相互に変換したい
 - 117 指定した値が列挙型で定義されているか判断したい
 - 118 Flags属性で列挙型をビットフラグとして扱いたい
 
Chapter 8 nullを扱う
- 119 null許容値型を利用したい
 - 120 null合体演算子でnullのときだけ別の値にしたい
 - 121 null条件演算子でnullチェックを省略したい
 - 122 null条件演算子とnull合体演算子を同時に使いたい
 - 123 null合体割り当て演算子でnullのときに値を変更したい
 - 124 null許容参照型を利用したい
 
Chapter 9 LINQ
- 125 条件に該当する要素だけ取得したい(Where)
 - 126 クエリの結果を新しい型に変換したい(Select)
 - 127 ある位置までの要素を取得したい(Take/TakeWhile)
 - 128 ある位置まで要素をスキップしたい(Skip/SkipWhile)
 - 129 最初の要素を取得したい(First/FirstOrDefault)
 - 130 最後の要素を取得したい(Last/LastOrDefault)
 - 131 指定した位置の要素を取得したい(ElementAt)
 - 132 重複する値を取り除きたい(Distinct)
 - 133 シーケンスの要素の順序を反転したい(Reverse)
 - 134 データを並べ替えたい(OrderBy/OrderByDescending)
 - 135 特定の型だけを取得したい(OfType)
 - 136 シーケンスの先頭/末尾に要素を追加したい(Prepend/Append)
 - 137 シーケンス内の要素数を求めたい(Count)
 - 138 合計を求めたい(Sum)
 - 139 最小値,最大値を求めたい(Min/Max)
 - 140 平均値を求めたい(Average)
 - 141 すべての要素が条件を満たしているかどうかを調べたい(All)
 - 142 いずれかの要素が条件を満たしているかどうかを調べたい(Any)
 - 143 指定した要素がシーケンスに含まれているか調べたい(Contains)
 - 144 シーケンスを配列やList<T>に変換したい(ToArray/ToList)
 - 145 ディクショナリに変換したい(ToDictionary)
 - 146 HashSet<T>に変換したい(ToHashSet)
 - 147 指定したキーでグルーピングしてILookup<K,E>に変換したい
 - 148 和集合を求めたい(Union)
 - 149 積集合を求めたい(Intersect)
 - 150 差集合を求めたい(Except)
 - 151 指定したキーに基づいて結果をグループ化したい(GroupBy)
 - 152 関連のあるふたつのシーケンスをひとつにまとめたい(Join)
 - 153 ふたつのシーケンスの要素を関連付けその結果をグループ化したい(GroupJoin)
 - 154 階層構造になったオブジェクトのシーケンスを平坦化したい(SelectMany)
 - 155 ふたつのシーケンスを連結したい(Concat)
 - 156 ふたつのシーケンスの対になる要素をタプルのシーケンスに変換したい(Zip)
 - 157 ふたつのシーケンスが等しいかを調べたい(SequenceEqual)
 - 158 指定した範囲の数値コレクションを生成したい(Range)
 - 159 指定した値を繰り返すシーケンスを生成したい(Repeat)
 - 160 特殊な集計処理を行いたい(Aggregate)
 - 161 複数のLINQメソッドを連結させたい
 - 162 LINQで外部結合を行いたい
 
Chapter 10 例外処理と後処理
- 163 例外処理を記述したい
 - 164 複数の例外に対応したい
 - 165 例外情報にアクセスしたい
 - 166 例外を発生させたい
 - 167 例外を再スローしたい
 - 168 例外オブジェクトに独自のデータを追加したい
 - 169 InnerExceptionプロパティを再帰的にたどりたい
 - 170 独自例外を定義したい
 - 171 例外処理で例外フィルターを使い対象例外を絞りたい
 - 172 条件演算子やnull合体演算子とともに例外を発生させたい
 - 173 try-finallyで確実に後処理をしたい
 - 174 using文で確実にDisposeメソッドを呼び出したい
 - 175 using宣言を使い,より簡単にusing文を書きたい
 
Chapter 11 より高度なクラスの定義
- 176 ラムダ式を受け取るメソッドを定義したい
 - 177 インデクサを定義したい
 - 178 イベントを定義し利用したい
 - 179 拡張メソッドでクラスを拡張したい
 - 180 LINQ to Objectsに対応した拡張メソッドを定義したい
 - 181 演算子をオーバーロードしたい
 - 182 独自の型でキャスト式を利用可能にしたい
 - 183 動的にプロパティを追加できるdynamicクラスを作りたい
 - 184 レコード型で安全性を高めたい
 
Chapter 12 ジェネリックとインターフェイス
- 185 ジェネリッククラスを定義したい
 - 186 ジェネリックメソッドを定義したい
 - 187 インターフェイスを定義したい
 - 188 インターフェイスに既定の動作を定義したい
 - 189 既定のインターフェイスメソッドを上書きしたい
 - 190 yield構文を使いIEnumerable<T>を返すメソッドを定義したい
 - 191 IEquatable<T>インターフェイスを持つクラスを定義したい
 - 192 IEqualityComparer<T>インターフェイスを実装したい
 - 193 IComparable<T>インターフェイスを実装し大小比較したい
 - 194 IComparer<T>インターフェイスを実装してソートしたい
 - 195 IDisposableインターフェイスを実装したい
 - 196 オブザーバーデザインパターンを実装したい
 
Chapter 13 よりスマートにコードを書く
- 197 最上位レベルステートメントを使いたい
 - 198 クラス名を省略してメソッドを呼び出したい
 - 199 nameof式でシンボルの名前の間違いをなくしたい
 - 200 defaultキーワードでオブジェクトの既定値を指定したい
 - 201 new式でインスタンス生成のコードを簡略化したい
 - 202 out変数で引数宣言を簡略化したい
 - 203 メソッド呼び出しで名前付き引数を使用したい
 - 204 switch式を利用したい
 - 205 switch文のcaseラベルに条件を付加したい
 - 206 is演算子でパターンマッチングを使いたい
 - 207 ローカル関数を定義したい
 - 208 プロパティのgetアクセサー,setアクセサーを式形式で書きたい
 - 209 init専用セッターでクラスの安全性を高めたい
 - 210 メソッドでタプルを利用しふたつの値を返したい
 - 211 配列でより高度なインデックス操作をしたい
 - 212 dynamic型を使いたい
 
Chapter 14 並列処理と非同期処理
- 213 BackgroundWorkerクラスを利用してバックグラウンドで処理を動かしたい
 - 214 awaitを使用して非同期メソッドを呼び出したい
 - 215 同期メソッドを非同期メソッドに変更したい
 - 216 Taskクラスで起動したタスクを最大N秒まで待ちたい
 - 217 指定した時間だけ処理を待機させたい
 - 218 Taskをキャンセルしたい
 - 219 Parallelクラスを使用して並列処理をさせたい
 - 220 PLINQで並列処理をしたい
 - 221 PLINQで並列処理の結果の順序を制御したい
 - 222 PLINQで並列処理の結果に対しても並列処理したい
 - 223 PLINQで例外処理を記述したい
 - 224 複数のTaskを並列で走らせたい
 - 225 lock構文で安全に並列処理をしたい
 - 226 フィールドをvolatile宣言して安全に並列処理をしたい
 - 227 Interlockedクラスを使用して安全に並列処理をしたい
 - 228 並列処理で安全にコレクションにアクセスしたい
 - 229 Progress<T>で進行状況を表示したい
 
Chapter 15 リフレクション
- 230 オブジェクトの型情報を取得したい
 - 231 リフレクションを利用しプロパティの値を取得したい
 - 232 リフレクションを利用しプロパティに値を設定したい
 - 233 指定した型のプロパティの一覧を取得したい
 - 234 リフレクションを利用しメソッドを呼び出したい
 - 235 指定した型のメソッドの一覧を取得したい
 - 236 コンストラクターを動的に呼び出したい
 - 237 コンストラクターの一覧を得たい
 - 238 現在のクラス名,メソッド名を取得したい
 - 239 実行時にオブジェクトの型の種類を調べたい
 - 240 プロパティに指定した属性が付加されているか調べたい
 - 241 プロパティに付加された属性の値を取得したい
 - 242 メソッドに付加された属性を取得したい
 - 243 列挙型のフィールドに付加された属性を取得したい
 - 244 クラスに付加された属性を取得したい
 - 245 オブジェクトのプロパティ名と値をDictionary<TKey,TValue>に変換したい
 - 246 文字列プロパティの値がnullならすべて空文字列にしたい
 - 247 独自の属性を定義したい
 
Chapter 16 正規表現
- 248 文字列が指定したパターンと一致するか調べたい
 - 249 文字列の中からパターンに一致する箇所をひとつ取り出したい
 - 250 文字列の中からパターンに一致する箇所をすべて取り出したい
 - 251 正規表現を使い高度な置換処理をしたい
 - 252 文字列を指定したパターンで分割したい
 - 253 大文字小文字を区別せずマッチさせたい
 - 254 複数行モードで正規表現を使いたい
 
Chapter 17 ファイルとディレクトリ
- 255 ファイルパスを組み立てたい
 - 256 パス名を構成要素に分割したい
 - 257 相対ファイルパスを絶対パスに変換したい
 - 258 ファイルを操作したい
 - 259 ファイルの拡張子を変更したい
 - 260 ファイルサイズを取得したい
 - 261 ファイルの更新日時を取得/更新したい
 - 262 ファイルの読み取り専用属性を取得または設定したい
 - 263 ディレクトリを操作したい
 - 264 指定したディレクトリにあるファイル一覧を得たい
 - 265 指定したディレクトリにあるディレクトリ一覧を得たい
 - 266 現在の作業ディレクトリを取得したい
 - 267 一時的に利用するファイルを作成したい
 - 268 特殊なフォルダ名を取得したい
 - 269 テキストファイルを読み込みたい
 - 270 テキストファイルを作成したい
 - 271 テキストファイルに追記したい
 - 272 Shift-JISのファイルを扱いたい
 - 273 バイナリファイルを読み込みたい
 - 274 byte配列のデータをファイルに出力したい
 - 275 文字列をStreamとして扱いたい
 
Chapter 18 Zipファイル
- 276 ディレクトリからZipアーカイブを作成したい
 - 277 Zipアーカイブに新しいファイルを追記したい
 - 278 Zipアーカイブからファイルを削除したい
 - 279 Zipアーカイブファイルに格納されているファイルの一覧を取得したい
 - 280 Zipアーカイブ内のファイルをすべて抽出したい
 - 281 Zipアーカイブから指定したファイルを抽出したい
 
Chapter 19 ロギング
- 282 ILoggerでログを出力したい
 - 283 appsettings.jsonでログレベルを設定したい
 - 284 コードでログレベルを設定したい
 - 285 ログ出力でメッセージテンプレートを使用したい
 - 286 NLogを使いたい
 - 287 Log4Netを使いたい
 - 288 ZLoggerを使いたい
 
Chapter 20 Entity Framework Core
- 289 Entity Framework Coreの利用を開始したい
 - 290 Entity Framework Coreでモデルを定義したい
 - 291 データベーステーブル間のリレーションを定義したい
 - 292 属性を使いエンティティクラスのプロパティに制約を設定したい
 - 293 エンティティクラスにデータベーステーブルにマッピングされないプロパティを定義したい
 - 294 データベースのテーブル名,カラム名を明示的に指定したい
 - 295 エンティティクラスのプロパティで主キーを明示したい
 - 296 データベーステーブルのカラムにインデックスを作成したい
 - 297 列挙型の値を文字列としてデータベースに格納したい
 - 298 データベーステーブルに行を挿入したい
 - 299 データベーステーブルから条件に合致した行を取得したい
 - 300 データベースから関連するテーブルのデータを取得したい
 - 301 データベーステーブルの行を更新したい
 - 302 データベーステーブルから行を削除したい
 - 303 データベースからデータを読み込まずに更新したい
 - 304 EF Coreで生のSQLを発行したい
 - 305 EF Coreでトランザクションを制御したい
 - 306 EF Coreで更新されないシナリオでパフォーマンスを向上させたい
 - 307 EF Coreでオプティミスティック同時実行制御を行いたい
 - 308 EF Coreでコマンドタイムアウト値を設定したい
 - 309 EF Coreが出力するSQLを確認したい
 
Chapter 21 ネットワーク
- 310 HTMLをエンコード・デコードしたい
 - 311 URLをエンコード・デコードしたい
 - 312 JSONシリアライズ,デシリアライズしたい
 - 313 パラメーター付きクエリ文字列を組み立てたい
 - 314 URLで指定したWebページ(HTML)を取得したい
 - 315 Webサーバーからファイルをダウンロードしたい
 - 316 指定したURLからJSONデータを取得したい
 - 317 HttpClientでContent-typeを指定したい
 - 318 HttpClientでリクエストヘッダーにUser-Agentを設定したい
 - 319 HttpClientでHTTPステータスコードを確認したい
 - 320 HTTPメソッドを指定してAPIを呼び出したい
 - 321 HTTP POSTでフォームデータを送信したい
 - 322 HTTP POSTでJSONデータを送信したい
 - 323 HttpClientFactoryで生成したHttpClientを利用したい
 - 324 Http通信のログを出力したい
 - 325 メールを送信したい
 - 326 添付ファイル付きメールを送信したい
 
Chapter 22 暗号化
- 327 共有キー暗号方式の暗号化と復号のためのキーを生成したい
 - 328 共有キー暗号方式で文字列を暗号化したい
 - 329 共有キー暗号方式で暗号化された文字列を復号したい
 - 330 共有キー暗号方式でファイルを暗号化したい
 - 331 共有キー暗号方式で暗号化されたファイルを復号したい
 - 332 公開キー暗号方式で利用する公開キーと秘密キーを生成したい
 - 333 公開キー暗号方式の秘密キーをキーコンテナに格納したい
 - 334 公開キー暗号方式を使って暗号化したい
 - 335 公開キー暗号方式を使って復号したい
 - 336 RSA公開キーファイル(PKCS#1)を使って暗号化したい
 - 337 RSA秘密キーファイル(PKCS#1)を使って復号したい
 - 338 データのハッシュ値を求めたい
 - 339 ハッシュ値を使いデータの検証を行いたい
 - 340 デジタル署名をしたい
 - 341 デジタル署名したデータを検証したい
 
Chapter 23 ExcelとWord
- 342 [Excel]NPOIを使ってExcelファイルを作成したい
 - 343 [Excel]NPOIを使ってセルに値を設定したい
 - 344 [Excel]NPOIを使って特定のセルの値を取得したい
 - 345 [Excel]NPOIを使ってすべてのセルの値を取得したい
 - 346 [Excel]NPOIを使ってセルの値を変更したい
 - 347 [Excel]NPOIを使ってセルにスタイルを設定したい
 - 348 [Word]OpenXMLでWord文書を新規作成したい
 - 349 [Word]OpenXMLで段落の位置揃えをしたい
 - 350 [Word]OpenXMLで既存文書に段落を挿入したい
 - 351 [Word]OpenXMLで段落にスタイルを適用したい
 
Chapter 24 単体テスト
- 352 xUnit.netを使いたい
 - 353 メソッドが期待した値を返してくるかテストしたい
 - 354 指定した範囲に収まっているかテストしたい
 - 355 指定した例外が発生するかテストしたい
 - 356 テストの前処理を記述したい
 - 357 InlineData属性でテストメソッドに渡すパラメーターの値を指定したい
 - 358 Member属性でテストメソッドに渡すパラメーターの値を指定したい
 - 359 単体テストでデバッグメッセージを出力したい
 - 360 [Moq]Moqの利用を開始したい
 - 361 [Moq]Mockオブジェクトにプロパティを定義したい
 - 362 [Moq]Mockオブジェクトにメソッドを定義したい
 - 363 [Moq]Mockオブジェクトに例外を発生させるメソッドを設定したい
 - 364 [Moq]Mockオブジェクトでメソッドが呼び出された際の処理を記述したい
 - 365 [xUnit][Moq]Mockを使って単体テストを行いたい
 - 366 [xUnit][Moq]MockをDIして単体テストを行いたい
 
Chapter 25 落穂拾い
- 367 byte配列とBase64文字列を相互変換したい
 - 368 文字列をBase64でエンコード・デコードしたい
 - 369 byte配列を16進表記したい
 - 370 どのメソッドから呼び出されたのか知りたい
 - 371 OSの情報を取得したい
 - 372 論理プロセッサの数を調べたい
 - 373 環境変数を取得したい
 - 374 現在のプロセス環境ブロックで環境変数をセットしたい
 - 375 GUIDを生成したい
 - 376 指定した間隔である処理を繰り返し動かしたい
 - 377 ある時点からの経過時間を求めたい
 - 378 プロセスを起動したい
 - 379 起動したプロセスが終了するまで待ちたい
 - 380 起動したプロセスの標準出力の内容を取得したい
 - 381 標準エラー出力にメッセージを出力したい
 - 382 VisualStudioのデバッグウィンドウにログを出力したい
 - 383 コンソールアプリケーションで汎用ホストを利用したい
 - 384 appsettings.jsonから構成データの値を取得したい
 - 385 構成データを環境により切り替えたい
 
- 参考文献
 - Index