c#でList<T>のToStringで中身を表示する
見せられないよ(( な物をしばらく書いていたので音沙汰ない感じで。今回はListをtoStringした時にSystem.Collections.Generic.List`
元はといえばCvMatはきちんと表示されるのにクソだなと思っていたのが理由。
そういえば中括弧の位置変えました。正直改行する言語c#だけじゃんということで。やってることはとても簡単。toStrを投げてあげてコレクションに適用して連結するだけ。正直StringBuilder使いたくなかったけど妥協妥協
普通のToStringと差別化するため呼び出すときは型を指定して
var list = new List<int>(){ 1,2,3 }; var str = list.ToString<int>();//[1,2,3,]
便利。Listの中身が特殊な場合でもtoStrを渡してあげれば
var list = new List<Tuple<int,double>>(); var str = list.ToString((t) => string.Format("[{0} : {1}]", t.Item1, t.Item2));
引数を省略しない場合は型パラメータはいらない*1
連結の仕方は3つ目の引数で変えられる。
2015/03/01追記
表示したいだけならこの記事のDebugPrintあたりが良さそう
c# LINQと拡張メソッド追加に関して - AccessViolation Exception
*1:ToHogeStringとかにすれば避けられるけど見栄え的に