ということで拡張メソッドで拡張してみた。
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 件のコメント:
コメントを投稿