コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】ListをQueueの様に扱うための拡張メソッド

ソースコード

using System.Collections.Generic;

public static class ListExtensions
{
    /// <summary>
    /// 先頭にあるオブジェクトを削除し、返します
    /// </summary>
    public static T Dequeue<T>( this IList<T> self )
    {
        var result = self[ 0 ];
        self.RemoveAt( 0 );
        return result;
    }

    /// <summary>
    /// 末尾にオブジェクトを追加します
    /// </summary>
    public static void Enqueue<T>( this IList<T> self, T item )
    {
        self.Add( item );
    }

    /// <summary>
    /// 先頭にあるオブジェクトを削除せずに返します
    /// </summary>
    public static T Peek<T>( this IList<T> self )
    {
        return self[ 0 ];
    }
}

使用例

var list = new List<int>{ 1, 2, 3, 4, 5 };
list.Dequeue();
list.Enqueue( 6 );
list.Peek();
var list = new List<string>
{
    "ピカチュウ",
    "カイリュー",
    "ヤドラン",
};

Debug.Log( list.Dequeue() ); // ピカチュウ
Debug.Log( list.Dequeue() ); // カイリュー
Debug.Log( list.Dequeue() ); // ヤドラン

関連記事