ふらっと C#,C♯,C#(初心者用) Part121 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0370デフォルトの名無しさん
2016/06/24(金) 11:29:54.22ID:UubPjCQVDictionary<Type, int>を使えば数え上げの方は簡単。
Dictionary<Type, int> counts = new Dictionary<Type, int>();
foreach (var type in 型のリスト) counts[type] = 0;
foreach (var item in オブジェクトのコレクション) counts[item.GetType()]++;
> list[i]=(t)"123";
問題はこっち。
"123"はString型だから、勝手に他の型にキャストすることはできない。何らかの方法で型変換を行う必要がある。
たとえば、対象の型がプリミティブ型のみなら、IConvertibleを使うとか。
あるいは、TypeDescriptor.GetConverter(Type)でTypeConverterを取得してConvertFromStringするとか。
逆に型変換さえ行ってしまえば、型情報はオブジェクト自身が持っているから、代入時にキャストする意味はない。全ての基底クラスであるobjectで十分。
■ このスレッドは過去ログ倉庫に格納されています