.NET C#,VB.NET,VC.NET

■ArrayList 可変長配列(動的配列)

可変長配列(動的配列)のサンプルです。
C++のSTLでいうところのlistのようなものです。
実行時に配列のサイズが変化するようなデータを格納します。

サンプルソースはコンソールアプリです。
System.Collections.ArrayList
を利用します。

サンプルでは利用していない機能も色々あるので
ヘルプやMSDNを参考にしてみてください。

C#
using System;
using System.Collections;

namespace ArrayList_test
{
    /// <summary>
    /// Class1 の概要の説明です。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            // 空っぽのArrayListを用意
            ArrayList alData = new ArrayList();

            // ArrayListの末尾に要素を追加
            // 追加するものはobjectなので数値でも文字列でも何でもOK
            alData.Add( 10 );
            alData.Add( "C" );
            alData.Add( "B" );
            alData.Add( "A" );

            // 指定インデックス位置へ挿入(インデックスは0スタート)
            alData.Insert( 0, "insert" );

            // 指定objectを検索し、そのインデックスを返す
            Console.WriteLine( "Aのインデックス={0}", alData.IndexOf( "A" ) );

            // インデックス2の要素を出力
            Console.WriteLine( "インデックス2の要素={0}", alData[2].ToString() );

            // 指定objectが存在するか調べる
            if ( !alData.Contains( "D" ) )
                Console.WriteLine( "Dは存在しません" );

            // 指定要素を削除する
            alData.Remove( 10 );

            // 指定インデックスの要素を削除する
            alData.RemoveAt( 0 );

            // 要素数を返す
            Console.WriteLine( "alDataの要素数={0}", alData.Count );

            // 要素の並べ替え
            alData.Sort();

            // ArrayListを複製する
            ArrayList alClone = (ArrayList)alData.Clone();

            // 全要素を順に出力
            Console.WriteLine( "全要素を出力↓" );
            foreach( object obj in alClone )
            {
                Console.WriteLine( obj.ToString() );
            }
        }
    }
}
VB.NET
Module Module1

    Sub Main()
        ' 空っぽのArrayListを用意
        Dim alData As ArrayList = New ArrayList

        ' ArrayListの末尾に要素を追加
        ' 追加するものはobjectなので数値でも文字列でも何でもOK
        alData.Add(10)
        alData.Add("C")
        alData.Add("B")
        alData.Add("A")

        ' 指定インデックス位置へ挿入(インデックスは0スタート)
        alData.Insert(0, "insert")

        ' 指定objectを検索し、そのインデックスを返す
        Console.WriteLine("Aのインデックス={0}", alData.IndexOf("A"))

        ' インデックス2の要素を出力
        Console.WriteLine("インデックス2の要素={0}", alData(2).ToString())

        ' 指定objectが存在するか調べる
        If (Not alData.Contains("D")) Then
            Console.WriteLine("Dは存在しません")
        End If

        ' 指定要素を削除する
        alData.Remove(10)

        ' 指定インデックスの要素を削除する
        alData.RemoveAt(0)

        ' 要素数を返す
        Console.WriteLine("alDataの要素数={0}", alData.Count)

        ' 要素の並べ替え
        alData.Sort()

        ' ArrayListを複製する
        Dim alClone As ArrayList = alData.Clone()

        ' 全要素を順に出力
        Console.WriteLine("全要素を出力↓")
        For Each obj As Object In alData
            Console.WriteLine(obj.ToString())
        Next
    End Sub

End Module
VC.NET
#include "stdafx.h"

#using <mscorlib.dll>

using namespace System;
using namespace System::Collections;

int _tmain()
{
    // 空っぽのArrayListを用意
    ArrayList *alData = new ArrayList();

    // ArrayListの末尾に要素を追加
    // 追加するものはobjectなので数値でも文字列でも何でもOK
    alData->Add( __box(10) );            // 値の型をボックス化しないとコンパイルエラー
//    System::Object *obj = __box(10);    // 下のように書くこともできるけど上が楽なので省略
//    alData->Add( obj );
    alData->Add( S"C" );
    alData->Add( S"B" );
    alData->Add( S"A" );

    // 指定インデックス位置へ挿入(インデックスは0スタート)
    alData->Insert( 0, S"insert" );

    // 指定objectを検索し、そのインデックスを返す
    Console::WriteLine( S"Aのインデックス={0}", __box(alData->IndexOf( S"A" )) );

    // インデックス2の要素を出力
    Console::WriteLine( S"インデックス2の要素={0}", alData->get_Item(2)->ToString() );

    // 指定objectが存在するか調べる
    if ( !alData->Contains( S"D" ) )
        Console::WriteLine( S"Dは存在しません" );

    // 指定要素を削除する
    alData->Remove( __box(10) );

    // 指定インデックスの要素を削除する
    alData->RemoveAt( 0 );

    // 要素数を返す
    Console::WriteLine( S"alDataの要素数={0}", __box(alData->Count) );

    // 要素の並べ替え
    alData->Sort();

    // ArrayListを複製する
    ArrayList *alClone = dynamic_cast<ArrayList*>(alData->Clone());

    // 全要素を順に出力
    Console::WriteLine( S"全要素を出力↓" );
    System::Collections::IEnumerator* emu = alClone->GetEnumerator();
    while ( emu->MoveNext() )
        Console::Write( "{0}\r\n", emu->Current );

    return 0;
}
【実行結果】
Aのインデックス=4
インデックス2の要素=C
Dは存在しません
alDataの要素数=3
全要素を出力↓
A
B
C

トップ  > .NET C#,VB.NET,VC.NET
Copyright (C) 2005.09 〜 By Shougo Suzaki

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送