AccessViolation Exception

仕事でもはんだづけ、家でもはんだづけ

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つ目の引数で変えられる。

c#ListのtoString拡張


2015/03/01追記

表示したいだけならこの記事のDebugPrintあたりが良さそう

c# LINQと拡張メソッド追加に関して - AccessViolation Exception

*1:ToHogeStringとかにすれば避けられるけど見栄え的に