■■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