C#

C#

【C#】async Main の使い方|非同期エントリポイント

C# 7.1 以降では、アプリケーションのエントリポイントである Main メソッドを async にすることが可能になりました。これにより、アプリケーションの起動直後から await を利用した非同期処理を自然に書けるようになります。この...
C#

【C#】文字列補間($”…”)の基本と活用例

C# 6.0 以降では、文字列の中に変数や式を直接埋め込める文字列補間(interpolated string)が導入されました。従来の string.Format() よりも可読性が高く、コードをシンプルに記述できます。この記事では $"...
C#

【C#】IEnumerableとIQueryableの違いと使い分け

C# でデータを扱う際によく登場する IEnumerable と IQueryable。どちらもコレクションを列挙するための仕組みですが、処理の実行タイミングや適した用途に違いがあります。本記事では両者の特徴を整理し、使い分けのポイントを解...
C#

【C#】非同期LINQ(System.Linq.Async)の活用方法

【C#】非同期LINQ(System.Linq.Async)の活用方法 C# では LINQ を使ってコレクションを効率的に操作できますが、通常の LINQ は同期処理に限られます。データベースや外部 API など非同期でデータを取得する場...
C#

【C#】LINQでグルーピング・集計を行う方法|GroupByと集約関数

C# の LINQ を使うと、データをグループ化したり、合計や平均などの集計を簡潔に記述できます。特に GroupBy と組み合わせることで、SQL のような集計処理をコード内で実現できます。本記事では GroupBy の基本から、Sum・...
C#

【C#】Dictionaryを安全に操作する方法|TryGetValueとGetValueOrDefault

C# の Dictionary<TKey, TValue> はキーと値を効率的に管理できる便利なコレクションですが、存在しないキーを参照すると例外が発生する点に注意が必要です。安全に操作するためには TryGetValue や GetVal...
C#

【C#】switch式でのパターンマッチング活用(型・プロパティ・論理パターン)

C# 8.0 以降では switch 文に加えて switch 式が導入され、より簡潔に条件分岐を記述できるようになりました。さらに C# 9.0 以降ではパターンマッチングが強化され、型・プロパティ・論理演算を組み合わせた柔軟な記述が可能...
C#

【C#】null 許容参照型(nullable reference types)の基本

C# 8.0 以降では「null 許容参照型(nullable reference types)」が導入されました。これにより、参照型に null が代入可能かどうかをコンパイラが区別して扱えるようになります。null による実行時エラー(...
C#

【C#】target-typed new 式でコードを簡潔に書く方法

C# 9 以降では target-typed new 式が導入され、右辺に型を明示しなくても左辺の型から推論できるようになりました。これによりコードの冗長さを減らし、よりシンプルに記述できます。本記事では target-typed new ...
C#

【C#】global using の使い方とメリット

C# 10 では global using が導入され、全ファイル共通で利用できる using 宣言を簡単に定義できるようになりました。これにより、冗長な記述を減らし、プロジェクト全体で統一した using を管理しやすくなります。本記事で...
C#

【C#】非同期メソッドで戻り値を扱う方法(Task<T>の活用)

C# の非同期処理では async / await を利用するのが一般的です。その際、非同期メソッドから値を返すには Task<T> を使います。これにより「非同期に計算した結果を返す」ことが可能になります。本記事では Task<T> の基...
C#

【C#】設定ファイル(appsettings.json)を扱う方法|IOptionsパターン

C#/.NET アプリケーションでは、接続文字列や外部サービスのキーなどをソースコードに直書きせず、appsettings.json などの設定ファイルにまとめて管理するのが一般的です。さらに、IOptions パターンを使うことで、設定値...
C#

【C#】ログ出力の基本|ILoggerとSerilogの使い方

C#/.NET で開発を行う際、ログ出力はアプリケーションの動作確認やトラブルシューティングに欠かせません。.NET には標準で ILogger インターフェースが用意されており、柔軟にログを扱えます。また外部ライブラリの Serilog ...
C#

【C#】シングルトンパターンの実装方法と注意点

シングルトンパターンは「アプリケーション全体でインスタンスをひとつだけにする」デザインパターンです。設定値やロガー、接続管理などの「共有すべきオブジェクト」を管理する際によく利用されます。C# ではさまざまな方法でシングルトンを実装できます...
C#

【C#】非同期処理と並列処理の違い|TaskとParallelの使い分け

C# では Task を使った非同期処理と、Parallel クラスを使った並列処理を実装できます。一見似ている両者ですが、目的や動作の仕組みは異なります。違いを理解して適切に使い分けることで、効率的で無駄のないプログラムを構築できます。本...
C#

【C#】非同期処理と並列処理の違い|TaskとParallelの使い分け

C# では Task を使った非同期処理と、Parallel クラスを使った並列処理を実装できます。一見似ている両者ですが、目的や動作の仕組みは異なります。違いを理解して適切に使い分けることで、効率的で無駄のないプログラムを構築できます。本...
C#

【C#】依存性注入(DI)の基本と実装例

依存性注入(Dependency Injection, DI)は、クラスが必要とするオブジェクトを自分で生成せず外部から受け取る設計手法です。具体的には「new で直接作らない」「どの具象クラスを使うかを利用側が決めない」という二点を徹底す...
C#

【C#】init専用プロパティの使い方|イミュータブルなオブジェクト設計

C# 9.0 以降では init アクセサが導入され、オブジェクト初期化子でのみ値を設定できる「init専用プロパティ」を定義できるようになりました。これにより、オブジェクトの生成後は値を変更できない「イミュータブル(不変)」な設計を簡単に...
C#

【C#】タプル(Tuple / ValueTuple)の使い方と利点

C# では複数の値をひとまとめに扱いたいときに「タプル(Tuple)」が利用できます。クラスや構造体をわざわざ定義しなくても、一時的に複数の値を返す・渡すといった用途に便利です。C# 7.0 以降では ValueTuple が導入され、より...
C#

【C#】パターンマッチングの強化|switch式の活用

C# 8.0 以降ではパターンマッチング機能が大幅に強化され、従来の switch 文に加えて switch 式が利用できるようになりました。これにより、条件分岐をより簡潔に記述でき、可読性や保守性が向上します。本記事では switch 式...