List<int>
どういうわけかにキャストできますList<string>
か?
ループして.ToString()を実行できることはわかっていますが、キャストは素晴らしいでしょう。
私はC#2.0を使用しています(したがって、LINQはありません)。
.NET 2.0にはConvertAll
、コンバーター関数を渡すことができるメソッドがあります。
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
2010年更新
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
C#2.0は実行できますList<T>.Convert
か?もしそうなら、私はあなたの最善の推測は代表者とそれを使用することだと思います:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
それらの線に沿った何か。
グレンの答えに賛成してください。これはおそらく正しいコードです;-)
以下を使用できます。
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
intからstringへの明示的または暗黙的なキャストが存在しないため、直接キャストすることはできません。次のような.ToString()を含むメソッドである必要があります。-
foreach (int i in intList) stringList.Add(i.ToString());
編集-または他の人がかなり見事に指摘しているように、intList.ConvertAll(delegate(int i){return i.ToString();});を使用しますが、明らかに.ToString()を使用する必要があり、これは変換ではなく変換ですキャスト。
新しいリストを作成する必要があります。の基になるビット表現List<int>
とList<string>
は完全に互換性がありません。たとえば、64ビットプラットフォームでは、個々のメンバーのサイズは同じではありません。
List<string>
理論的にはaを-として扱うことは可能List<object>
です。これにより、共変性と反変性のエキサイティングな世界に入ることができます。現在、C#またはVB.NETではサポートされていません。