StringCollectionの連結


StringCollection って割と便利に使ってたのだけど、要素を連結して一つの文字列にしたいとき若干面倒なんですよ。
なぜか ToArray() がないので、単純に String.Join に渡せない。一旦配列を用意して、 CopyTo() して、という手間が必要。
で、さっき String.Join() のヘルプ眺めてたら、『String.Join<T> メソッド (String, IEnumerable<T>)』なんてのがあるじゃないですか。いつの間に!(←って.NET4で増えたんだから、情弱もいいところでございますが^^;)
なんだー、StringCollection そのまんま渡せるじゃん、などと早合点してやってみるとうまくいかない。はい、IEnumerable と IEnumerable<T> は別物です。
じゃあなんかうまい手はないのかということで、Linqの Cast メソッドで IEnumerable<T> 、まあ<T>っていうか<String> にしてやるわけです。

Dim sc As New StringCollection
sc.Add("hoge1")
sc.Add("hoge2")
sc.Add("hoge3")
Console.WriteLine(String.Join(",", sc.Cast(Of String)))

なんかかわいくな~い(笑)
なんてなこと書いたところで気がついちゃったわけですよ。そもそも StringCollection なんか使ってないで List(Of String) にすればいいじゃん。ちゃんちゃん _(:3」∠)_

Dim lst As New List(Of String)
lst.Add("peke1")
lst.Add("peke2")
lst.Add("peke3")
Console.WriteLine(String.Join(",", lst))