ということで拡張メソッドで拡張してみた。
using System;
using System.Collections.Generic;
namespace QueueTest
{
class Program
{
static void Main(string[] args)
{
Queue<int> Q;
Q = new Queue<int>();
Q.Enqueue(1);
Q.Enqueue(2);
Q.Enqueue(3);
Q.Enqueue(4);
Q.Enqueue(5);
while (Q.Count > 0)
{ Console.WriteLine(Q.Dequeue()); }
Q = new Queue<int>();
Q.Enqueue(new int[] { 1, 2, 3, 4, 5 });
while (Q.Count > 0)
{ Console.WriteLine(Q.Dequeue()); }
}
}
public static class MyExtensions
{
public static void Enqueue<T>(this Queue<T> Queue, T[] Datas)
{
for (int i = 0; i < Datas.Length; i++)
{ Queue.Enqueue(Datas[i]); }
}
}
}
動作としては与えられた要素数をforで追加するだけなので、わざわざ書かなくとも適時forで回せばいい。しかし拡張メソッドで作っておけば通常のEnqueueとおなじ感覚で使用することができる。もしもオーバーロードするのが嫌というならEnqueueRange<T>(this Queue<T>, T[] Datas) とでもしておけばいいだろう。
0 件のコメント:
コメントを投稿