目次
Chapter 1 C#を始めるために
- C# とは
最初のC# プログラミング
- 「Visual Studio Community 2022」のインストールと起動
- コンソールアプリケーションの作成と実行
Chapter 2 基本文法
データ型
- データ型の種類
演算子
- 演算子
基本構文
- コメントを記述する
- 名前空間を定義する
- 名前空間を参照する
- クラス名を省略して参照する
- エイリアス(別名)を定義する
- エイリアスとクラスを区別する
- 最上位レベルのステートメントを利用する
- 変数を宣言する
- 暗黙的型指定の変数を宣言する
- 定数を宣言する
- 読み取り専用のフィールドを宣言する
- 動的型付け変数を定義する
- 型を変換する
- 配列(1次元)を宣言する
- 配列に範囲アクセスする
- 多次元配列を宣言する
- 列挙型(enum)を定義する
- 処理を分岐する
- 処理を複数に分岐する
- 複数の条件で処理を分岐する
- 使用しない変数/引数を破棄する
- 複数の条件で値を返す
- パターンマッチングでデータを識別する
- 処理をくり返す
- 処理をくり返す(ループ後に条件判定)
- 決まった回数の処理をくり返す
- すべての要素を順番に参照する
- 無条件に制御を分岐する
- 複数のデータ型をまとめて定義する
クラス
- クラスを定義する
- メソッドを定義する
- イテレーターを使って反復処理を行う
- 非同期イテレーターで反復処理を行う
- ローカル関数を定義する
- 静的ローカル関数を定義する
- インスタンスを生成する
- クラスのメンバにアクセスする
- コンストラクタを定義する
- プライマリコンストラクタを定義する
[C# 12] - オブジェクト初期化子を利用する
- インデックス初期化子を利用する
- デストラクタを定義する
- 引数を参照渡しする
- メソッドの結果を引数で受け取る
- 可変長引数を利用する
- オプション引数/名前付き引数を定義する
- 参照による戻り値や変数を定義する
- 静的メンバを定義/利用する
- 演算子をオーバーロードする
- インデクサを定義する
- クラスを継承する
- 基本クラスのコンストラクタを実行する
- クラスの継承を禁止する
- オーバーライドを定義する
- メンバを隠蔽する
- アクセス制御する
- プロパティを定義する
- 自動プロパティを定義する
- 抽象メソッド/クラスを定義する
- オブジェクトが指定の型に変換可能かチェックする
- is演算子で指定の型の変数を作成する
- as演算子でオブジェクトを変換する
- インタフェースを定義する
- インタフェースの既定の動作を定義する
- ジェネリックでクラス/メソッドを定義する
- ジェネリックを制約つきで宣言する
- ジェネリックの型を初期化する
- クラス/メソッドを分割して定義する
- 構造体を定義する
- メソッドのオーバーロード
- レコード型を定義する
- レコード型や構造体,匿名型を複製する
[C# 10] - 拡張メソッドを定義する
- 匿名型の変数を定義する
- null許容型を宣言する
- null許容参照型を宣言する
デリゲートとイベント
- デリゲートを定義する
- 匿名メソッドを定義する
- ラムダ式を利用する
- 静的匿名関数/静的ラムダ式を定義する
- クラスの定義でラムダ式を利用する
- 共変性/反変性の型パラメータを利用する
- イベントを宣言する
- async/awaitで非同期処理を定義する
- 例外処理を定義する
- 例外を任意に発生させる
- 条件で例外を捕捉する
- usingを用いてリソースを破棄する
- オーバーフローをチェックする
Chapter 3 基本データ型の操作
- 概要
Object型
- オブジェクトが等しいかどうかを判断する
System.Object - オブジェクトの文字列表現を取得する
System.Object
数値型
- 文字列から数値に変換する
System.Int32,Int64,Double,Decimalなど
日時型
- 現在の日時情報を取得する
System.DateTime - 書式付きで文字列に変換する
System.DateTime - 文字列から日時型を作成する
System.DateTime - 日時情報を比較する
System.DateTime - 日時情報の加算/減算を行う
System.DateTime,TimeSpan - カレンダーを取得する
System.Globalization.Calendar - 元号を表示する
System.Globalization.JapaneseCalendar - 日付のみ/時刻のみのデータを扱う
[.NET 6]
System.DateOnly / System.TimeOnly
文字型
- 文字の種類を判定する
System.Char - 文字を大文字/小文字にする
System.Char
文字列型
- 文字列を連結する
System.String - 文字列の長さを取得する
System.String, System.Globalization.StringInfo - 文字列から文字や部分文字列を取得する
System.String - 指定文字列を挟んで連結する
System.String - 文字列を分割する
System.String - 文字列を含むかどうかを判定する
System.String - 文字列を検索する
System.String - 先頭/末尾の文字列を検索する
System.String - 文字列を整形する
System.String - 文字列を比較する
System.String - 文字列を置換する
System.String - 文字列を挿入する
System.String - 文字列を削除する
System.String - 文字列が空かどうかを判定する
System.String - 左寄せ/右寄せする
System.String - 大文字化/小文字化する
System.String - 前後の空白を削除する
System.String
文字列バッファ
- 可変の文字列バッファを作成する
System.StringBuilder - 文字列バッファの末尾に追加する
System.StringBuilder - 文字列バッファに文字列を挿入する
System.StringBuilder - 文字列バッファの文字列を置換する
System.StringBuilder - 文字列バッファの文字列を削除する
System.StringBuilder - 文字列バッファの文字列の長さを取得/設定する
System.StringBuilder - 文字列バッファの指定位置の文字を取得/設定する
System.StringBuilder
エンコーディング
- エンコーディングを変換する
System.Text.Encoding - バイト列から文字列に変換する
System.Text.Encoding
正規表現
- 正規表現を作成する
System.Text.RegularExpressions.Regex - 正規表現で検索する
System.Text.RegularExpressions.Regex,Match,MatchCollection - 正規表現の検索オプションを指定する
System.Text.RegularExpressions.Regex - 正規表現のパターンをグループで指定する
System.Text.RegularExpressions.Match, GroupCollection, Group - 正規表現で文字列を置換する
System.Text.RegularExpressions.Regex
JSON入出力
- オブジェクトをJSON 文字列に変換する
System.Text.Json.JsonSerializer,System.Text.Json.JsonSerializerOptions,System.Text.Encodings.Web.JavaScriptEncoder,System.Text.Unicode.UnicodeRanges - JSON 文字列をオブジェクトに変換する
System.Text.Json.JsonSerializer
算術関数
- 絶対値を求める
System.Math - 三角関数を利用する
System.Math - 大小を比較する
System.Math - 切り捨て/切り上げ/四捨五入する
System.Math - 平方根/累乗を求める
System.Math - 指数/対数を利用する
System.Math
国際化
- カルチャ情報を取得/生成する
System.Globalization.CultureInfo - カルチャ情報をカスタマイズする
System.Globalization.CultureInfo
システムツール
- システム一意のインデックスを取得する
System.Guid - 乱数を利用する
System.Random - MD5 ハッシュを計算する
System.Security.Cryptography.MD5CryptoServiceProvider - SHA-1,SHA-2 ハッシュを計算する
System.Security.Cryptography.HMACSHA1
環境情報
- 実行環境の環境変数を取得する
System.Environment - 実行環境の環境属性を取得する
System.Environment,OperatingSystem,Version - レジストリの値を取得する
Microsoft.Win32.Registry,RegistryKey - レジストリの値を設定/削除する
Microsoft.Win32.RegistryKey,System.Security.AccessControl
Chapter 4 コレクション
- 概要
共通機能
- コレクションに要素を追加する
System.Collections.Generic.ICollection - コレクションの要素を削除する
System.Collections.Generic.ICollection - コレクションに要素が含まれているかどうかを判定する
System.Collections.Generic.ICollection - コレクションの要素の数を取得する
System.Collections.Generic.ICollection - コレクションを反復処理する
System.Collections.Generic.ICollection,IEnumerable - コレクションを配列にコピーする
System.Collections.Generic.ICollection - コレクションの要素が条件を満たすかどうかを判定する
System.Linq.Enumerable - コレクションを連結する
System.Linq.Enumerable - コレクションの重複を除去する
System.Linq.Enumerable - 2つのコレクションの和集合/差集合/積集合を生成する
System.Linq.Enumerable - コレクションの平均値/合計を計算する
System.Linq.Enumerable - コレクションの最大値/最小値を取得する
System.Linq.Enumerable - コレクションを条件でフィルタする
System.Linq.Enumerable - コレクションの一部を取り出す(範囲アクセス)
System.Range, System.Index - 高速なデータ読み書きを行う
System.Span,System.ReadOnlySpan,System.MemoryExtensions
リスト
- リストを生成する
System.Collections.Generic.List - リストの指定位置の要素を取得/設定する
System.Collections.Generic.List - リストの末尾に要素を追加する
System.Collections.Generic.List - リストの指定位置に要素を挿入する
System.Collections.Generic.List - リストの要素を削除する
System.Collections.Generic.List - 要素の位置を取得する
System.Collections.Generic.List - リストを検索する
System.Collections.Generic.List - 別の型のリストに変換する
System.Collections.Generic.List - リストの要素ごとに処理する
System.Collections.Generic.List - リストを並べ替える
System.Collections.Generic.List
セット
- セットを生成する
System.Collections.Generic.HashSet - セットとコレクションとの関係を調べる
System.Collections.Generic.HashSet
ディクショナリ
- ディクショナリを生成する
System.Collections.Generic.Dictionary - ディクショナリにキーと値を追加する
System.Collections.Generic.Dictionary - ディクショナリから値を取得する
System.Collections.Generic.Dictionary - ディクショナリに指定したキー/値が含まれるかどうかを判定する
System.Collections.Generic.Dictionary - キー/値のコレクションを取得する
System.Collections.Generic.Dictionary
キュー
- キューを生成する
System.Collections.Generic.Queue - キューの要素を追加/取得する
System.Collections.Generic.Queue
スタック
- スタックを生成する
System.Collections.Generic.Stack - スタックの要素を追加/取得する
System.Collections.Generic.Stack
Chapter 5 入出力
- 概要
ファイルシステム
- ファイル情報/ディレクトリ情報オブジェクトを作成する
System.IO.FileInfo,DirectoryInfo - ファイルを新規作成する
System.IO.File,FileInfo - ファイルをコピーする
System.IO.File,FileInfo - ファイルを削除する
System.IO.File,FileInfo - ファイルを移動する
System.IO.File,FileInfo - ディレクトリを作成する
System.IO.Directory,DirectoryInfo - ディレクトリを削除する
System.IO.Directory,DirectoryInfo - ディレクトリを移動する
System.IO.Directory,DirectoryInfo - ファイル/ディレクトリの存在を確認する
System.IO.File,Directory,FileInfo,DirectoryInfo - ファイル一覧を取得する
System.IO.Directory,DirectoryInfo - ディレクトリ一覧を取得する
System.IO.Directory,DirectoryInfo - ファイル/ディレクトリ一覧を高速に列挙する
System.IO.Directory,DirectoryInfo - ファイル/ディレクトリの情報を取得/設定する
System.IO.File,FileInfo,Directory,DirectoryInfo - ドライブの情報を取得する
System.IO.DriveInfo - ファイルストリームを作成する
System.IO.FileStream,File
バイナリ入出力
- メモリストリームを作成する
System.IO.MemoryStream - ストリームから読み込む
System.IO.Stream - ストリームに書き込む
System.IO.Stream - ストリームをシークする
System.IO.Stream - ストリームの情報を取得する
System.IO.FileStream - ストリームをコピーする
System.IO.FileStream - バイナリファイルの内容を一括で読み書きする
System.IO.File
テキスト入出力
- ストリームのリーダー/ライターを作成する
System.IO.StreamReader,StreamWriter,File - 文字列のリーダー/ライターを作成する
System.IO.StringReader,StringWriter - リーダーから読み込む
System.IO.TextReader - ライターに書き込む
System.IO.TextWriter - テキストファイルの内容を一括で読み書きする
System.IO.File - テキストファイルの内容を行単位に読み込む
System.IO.File
TCP/IPネットワーク
- TCPソケットで接続待ちする
System.Net.Sockets.TcpListener - TCPソケットで接続する
System.Net.Sockets.TcpClient
HTTP通信
- URIを処理する
System.Uri - Webサーバーからデータをダウンロードする
System.Net.WebClient - Webサーバーからテキストをダウンロードする
System.Net.WebClient - クエリ文字列を設定する
System.Net.WebClient,System.Collections.Specialized.NameValueCollection - Webサーバーからファイルをダウンロードする
System.Net.WebClient - WebサーバーにPOST データを送信する
System.Net.WebClient
Chapter 6 非同期処理
- 概要
スレッドによる非同期処理
- 引数のない処理をスレッドとして定義する
System.Threading.Thread - 引数を受け取る処理をスレッドとして定義する
System.Threading.Thread - スレッドタイマーで一定時間ごとに処理をする
System.Threading.Timer - システムタイマーで一定時間ごとに処理をする
System.Threading.Timer - スレッドを待機/再開させる
System.Threading.AutoResetEvent,Thread
Task による非同期処理の作成/実行
- 非同期処理を作成して開始する
System.Threading.Tasks.Task - 非同期処理から値を返す
System.Threading.Tasks.Task<TResult> - 非同期処理の依存関係を指定する
System.Threading.Tasks.Task - 非同期処理が実行されるスレッドを限定する
System.Threading.Tasks.TaskScheduler
非同期処理の制御
- 非同期処理を行う
System.Threading.Tasks.Task,TaskFactory - 非同期処理の状態を取得する
System.Threading.Tasks.Task - 入れ子の非同期操作を解除する
System.Threading.Tasks.Task<TResult> - 非同期処理完了後の継続処理を設定する
System.Threading.Tasks.Task,ContinuationOptions - 指定時間後に完了するだけの処理を作成する
System.Threading.Tasks.Task - 非同期処理の完了を待つ
System.Threading.Tasks.Task - 複数の非同期処理すべての完了を待つ
System.Threading.Tasks.Task - 複数の非同期処理いずれかの完了を待つ
System.Threading.Tasks.Task - 制御を返し非同期に残りの処理を行う
System.Threading.Tasks.Task - 非同期処理をキャンセルする
System.Threading.CancellationTokenSource,CancellationToken - 非同期処理の進行状況を報告する
System.IProgress<T>,System.Progress<T> - 非同期処理の例外を処理する
System.AggregateException
並列処理
- カウンターによるループを並列処理で実行する
System.Threading.Tasks.Parallel - 列挙子によるループを並列処理で実行する
System.Threading.Tasks.Parallel - PLINQ 式で処理を実行する
System.Collections.Generic.IEnumerable<T>, System.Linq.ParallelEnumerable
データフロー
- データフローで処理を実行する
System.Threading.Tasks.Dataflow.TransformBlock<TInput,TOutput>
Chapter 7 データベースアクセス
- 概要
接続型データアクセス
- データベースに接続/切断する
Microsoft.Data.SqlClient.SqlConnection - データベースに接続する(非同期版)
Microsoft.Data.SqlClient.SqlConnection - 設定ファイルの接続文字列を取得する
Microsoft.Extensions.Configuration.ConfigurationBuilder,IConfigurationRoot - SQL文を実行するオブジェクトを生成する
Microsoft.Data.SqlClient.SqlCommand - 結果データを返すSQL文を発行する
Microsoft.Data.SqlClient.SqlCommand - 単一の値を取得するSQL文を発行する
Microsoft.Data.SqlClient.SqlCommand - 結果データから値を取得する
Microsoft.Data.SqlClient.SqlDataReader - 更新系のSQL文を発行する
Microsoft.Data.SqlClient.SqlCommand - パラメータ付きSQL文を発行する
Microsoft.Data.SqlClient.SqlCommand,SqlParameterCollection,SqlParameter - ストアドプロシージャを実行する
Microsoft.Data.SqlClient.SqlCommand - ストアドプロシージャで出力パラメータを使用する
Microsoft.Data.SqlClient.SqlParameter
トランザクション制御
- トランザクションオブジェクトを作成する
Microsoft.Data.SqlClient.SqlConnection - トランザクションをコミット/ロールバックする
Microsoft.Data.SqlClient.SqlTransaction - トランザクションスコープを作成する
System.Transactions.TransactionScope
EF Core
- エンティティクラスを定義する
Microsoft.EntityFrameworkCore.DbContext,DbSet<T> - コンテキストクラスを定義する
Microsoft.EntityFrameworkCore.DbContext,DbSet<T> - データベースに変更を反映する
Microsoft.EntityFrameworkCore.DbContext,DbSet<T> - EF CoreのAPIでデータベースを作成/削除する
Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade - コンテキストでモデルをカスタマイズする
Microsoft.EntityFrameworkCore.DbContext,ModelBuilder,EntityTypeBuilder<TEntity> - リレーションシップをFluentAPIで指定する
Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder<TEntity>,ReferenceNavigationBuilder<TEntity,TRelatedEntity>,CollectionNavigationBuilder<TEntity,TRelatedEntity> - 初期データを設定する
Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder<TEntity> - 一括読み込みで関連エンティティも読み込む
System.Linq.IQueryable, Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions
LINQ to Entities
- LINQ のクエリ式構文/メソッド構文を記述する
System.Linq.Enumerable,System.Linq.Queryable - クエリを即時実行する
System.Linq.Enumerable - 結果セットから射影する
System.Linq.Queryable - 結果セットをフィルターする
System.Linq.Queryable - キープロパティでエンティティを結合する
System.Linq.Queryable - 結果セットの要素のすべて/どれかが条件を満たしているか確認する
System.Linq.Queryable - 結果セットに指定した要素が含まれていることを確認する
System.Linq.Queryable - 結果セットから重複を取り除く
System.Linq.Queryable - 結果セットの並べ替えをする
System.Linq.Queryable - 結果セットをグループ化する
System.Linq.Queryable - 結果セットの集計をする
System.Linq.Queryable - 結果セットの特定の要素を抽出する
System.Linq.Queryable
Column
- C#の名前の由来
- 暗黙的なglobal using
- アプリケーション独自の例外クラス
- オーバーフローの値
- ソースジェネレーターとパーシャルメソッド
- Microsoft Azureについて
- Visual Studioのリファクタリング - 名前の変更
- Visual Studioの機能 - IntelliSense
- Visual Basicの現在
- Visual Studioのリファクタリング - メソッドの抽出
- .NETのその他のプログラミング言語 - F#
- UnityとC#
- Visual Studioのリファクタリング - フィールドのカプセル化
- Visual Studioのリファクタリング - パラメーターの順序変更
- C#インタラクティブ
- Visual Studioの機能 -ソースコードの折りたたみ-
- C#をmacOSやLinuxで?
- C#によるスマートフォンアプリ開発
- 複数スレッドで変数を共有する場合の注意
- 完了通知のある非同期処理をTask<TResult>として提供する
- 条件によって完了済みタスクを返す
- 並列スタックウィンドウ
- MARS(Multiple Active Result Sets)
- ハッシュ関数の安全性
- SQL ServerがどのようなSQLを受けとっているか
- dotnet efツール
- LINQ to Entityが変換/発行しているSQL