「C#.NET」「ArrayList」から学ぶレガシーなコレクション入門 ~ 古の巨人が教える動的配列の基礎と実践的な使い方完全マスターガイド

2024年11月7日木曜日

コレクション

t f B! P L

名前空間 System.Collections

自己紹介

わしは古の時代から存在する巨人。今日はお主らに、.NETの歴史的なコレクション「ArrayList」について語り聞かせようぞ。わしも古いものだが、このArrayListもまた古の知恵じゃ。

基本機能

ArrayListは自在に大きさを変えられる不思議な器じゃ。わしの体のように、どんなものでも受け入れることができる。数も文字も、すべてを一つの器に収められるのじゃ。じゃが、今はより新しい「List」という道具が推奨されておる。

メモリ効率とボックス化

わしの時代を思い出すが、ArrayListは値型を格納する際にボックス化が発生する。これにより余計なメモリを使うことになるのじゃ。現代のプログラミングではこれは避けたい仕組みじゃな。

型安全性の考慮

何でも入れられるということは、諸刃の剣じゃ。取り出す際には型のチェックが必要になる。間違えると例外という罰が下るぞ。

コレクションの先駆者

わしと同じく、ArrayListは.NETの黎明期から存在する。コレクションの始まりとも言えるが、今では型安全な代替手段があるため、新規開発での使用は推奨されていないのじゃ。

実装の特徴

内部は配列で実装されておる。要素の追加で容量が足りなくなると、新しい配列を作り直すのじゃ。これはパフォーマンスに影響を与えることもある。

サンプルコード

C#
using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        // ArrayListの生成
        ArrayList ancientCollection = new ArrayList();

        // 様々な型のデータを追加
        Console.WriteLine("=== データの追加 ===");
        ancientCollection.Add("古の魔法");
        ancientCollection.Add(1000);
        ancientCollection.Add(true);
        ancientCollection.Add(3.14159);

        // コレクションの内容を表示
        Console.WriteLine("\n=== 全要素の表示 ===");
        foreach (object item in ancientCollection)
        {
            Console.WriteLine($"格納された要素: {item} (型: {item.GetType()})");
        }

        // 特定の位置に要素を挿入
        Console.WriteLine("\n=== 要素の挿入 ===");
        ancientCollection.Insert(2, "挿入された予言");
        
        // 要素の検索
        Console.WriteLine("\n=== 要素の検索 ===");
        int index = ancientCollection.IndexOf(1000);
        Console.WriteLine($"1000の位置: {index}番目");

        // 要素の削除
        Console.WriteLine("\n=== 要素の削除 ===");
        ancientCollection.Remove("古の魔法");
        ancientCollection.RemoveAt(1);

        // 残りの要素を表示
        Console.WriteLine("\n=== 削除後の要素 ===");
        foreach (object item in ancientCollection)
        {
            Console.WriteLine($"残存要素: {item}");
        }

        // 要素数と容量の確認
        Console.WriteLine($"\n現在の要素数: {ancientCollection.Count}");
        Console.WriteLine($"現在の容量: {ancientCollection.Capacity}");

        // コレクションのクリア
        ancientCollection.Clear();
        Console.WriteLine($"\nクリア後の要素数: {ancientCollection.Count}");
    }
}

解説

このサンプルコードでは以下の操作をデモンストレーションしています:
  1. ArrayListの作成と初期化
  2. 異なる型のデータ追加(文字列、整数、真偽値、浮動小数点数)
  3. コレクション内の要素の列挙と型情報の表示
  4. 指定位置への要素の挿入
  5. 要素の検索機能
  6. 要素の削除(値による削除とインデックスによる削除)
  7. コレクションの要素数と容量の確認 8. コレクションの完全クリア

このコードは、ArrayListの基本的な操作をすべて含んでおり、 実行時に各操作の結果が確認できるように構成されています。

このブログを検索

QooQ