[C#] Interlockedの使い方

Interlocked は、複数スレッドから共有される変数をロックなしで安全に更新するための仕組みです。本記事では、counter++ が危険な理由、アトミック操作の意味、Increment や CompareExchange の使いどころを整理します。

[C#] ImmutableHashSet<T>の使い方

ImmutableHashSet<T> は、一度作った集合を変更せず、新しい集合を返す不変コレクションです。本記事では、通常の HashSet<T> との違い、不変であることの利点、状態管理や並行処理での使いどころを整理します。

[C#] HashSet<T>の使い方

HashSet<T> は、重複を許さず高速な存在チェックができる集合コレクションです。本記事では、List<T> との違いや内部の考え方、集合演算、Equals と GetHashCode が重要になる理由まで整理します。

[C#] AttributeとReflectionの使いどころ

AttributeとReflectionを組み合わせることで、宣言的にコードの振る舞いを制御できます。設定と処理を分離し、拡張性や可読性を高める設計として、ルーティングやバリデーションなど多くの実務で活用されています。

[C#] Reflectionとは(機能と役割)

Reflectionは、実行時に型情報やAttributeなどのメタ情報を取得するための仕組みです。Attributeが付加する「情報」を読み取り、動作を切り替える役割を担い、フレームワークや自作処理で広く利用されています。

[C#] Attributeとは(機能と役割)

C#の [ ] で記述されるAttributeは、コードに追加の意味や設定を与える仕組みです。処理そのものではなくメタ情報として付与され、コンパイラやフレームワーク、実行時の仕組みによって解釈されて初めて意味を持ちます。

[C#] 非同期処理における競合対策

非同期処理では、同じリソースへの同時アクセスによる競合が起こりやすくなります。本記事では、lock、SemaphoreSlim、キュー、Interlocked などを使った代表的な競合対策を整理します。

[C#] async/await の振る舞いと使い方

async/await は別スレッドを作る仕組みではなく、処理を中断・再開して待ち時間を効率化するための仕組みです。本記事では、awaitする場合としない場合の違いを含めて、その挙動を整理します。