LoginSignup
0
1

More than 5 years have passed since last update.

【C#】Queueに複数の要素を1行でEnqueue

Last updated at Posted at 2018-09-28

こんなの誰得か分かりませんが、ちょっと悩んでしまったのでメモ。
しかもパフォーマンスはよろしくなさそうです。

var queue = new Queue<hoge>();

//事前処理でQueueには何か入ってる
var hoge1 = new hoge();
hoge1.fuga = fugafuga();
queue.Enqueue(hoge1);

//まとめて突っ込みたいコレクションが出来てしまった。
hoge[] array = hogehoge();

//forでなくQueueに1行で突っ込む
//重複を除きたいならUnion 今回のケースでは冗長だった・・・。
//queue = new Queue<hoge>(queue.ToArray().Union(array));
//重複を許容するならConcat↓
queue = new Queue<hoge>(queue.ToArray().Concat(array));

QueueやStackは今やほとんど使い道がなくなってしまったように感じます。
LINQのおかげもあるんでしょうか。

昔ながらのASCIIメッセージ通信をバッファっぽく使ってやりたかったのでQueueが適してるかと思ったんですが、まとまって突っ込みたいタイミングが出てきてしまい、なんとなくforeachを避けてみようと思ったらこんなことに・・・。

ListにDequeueっぽい機能を拡張した方が幸せなのかな、と言う気がしますね。

(2018/10/02 追記)
Queueにまとめて突っ込みたい場合はコメント頂いた拡張メソッドの適用を検討してください。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1