非ジェネリック Stack の動的配列による内部構造、サポートインターフェース、Push/Pop/Peek の計算量、Stack<T> との比較、DFS・Undo・式評価など使いどころを整理します。
SortedList の内部構造(ソート済みキー配列+二分探索)、サポートインターフェース、各操作の計算量、SortedList<TKey,TValue>・SortedDictionary<TKey,TValue> との比較と選び分けを整理します。
非ジェネリック Queue の循環バッファによる内部構造、サポートインターフェース、Enqueue/Dequeue/Peek の計算量、Queue<T> との比較、BFS・生産者消費者など使いどころを整理します。
Hashtable のオープンアドレス法による内部構造、IDictionary 等のサポートインターフェース、操作の計算量、ボックス化のコスト、Dictionary<TKey,TValue> との比較と移行戦略を整理します。
BitArray の内部構造(int[] 32 ビットパッキング)、サポートインターフェース、And/Or/Xor/Not 等のビット演算、bool[] や HashSet<int> との比較、エラトステネスの篩などの使いどころを整理します。
非ジェネリックな可変長配列 ArrayList の内部構造、サポートインターフェース、操作ごとの計算量、ボックス化コスト、List<T> との比較と移行戦略を整理します。
Lazy<T> による遅延初期化の意味とメリット、スレッドセーフティモード、AsyncLazy パターン、シングルトンや重い依存性管理での実践的な使いどころを整理します。
Dispose パターンの完全形を、基本形・SafeHandle 推奨形・継承対応形・IAsyncDisposable 併用形の 4 パターンに分けてサンプルコードで整理します。
IDisposable / Dispose() の役割、using 文・using 宣言(C# 8.0)・IAsyncDisposable を、Finalize() の代替としての位置付けから整理します。
System.Object.Finalize() の役割、~ClassName() デストラクタ構文、ファイナライズキューと世代昇格、ファイナライザを書くべき場面と避けるべき場面を整理します。