98

List<int>どういうわけかにキャストできますList<string>か?

ループして.ToString()を実行できることはわかっていますが、キャストは素晴らしいでしょう。

私はC#2.0を使用しています(したがって、LINQはありません)。

4

8 に答える 8

153

.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(); });
于 2008-09-04T23:16:00.050 に答える
121

2010年更新

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
于 2010-03-02T22:09:43.563 に答える
8

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(); });

それらの線に沿った何か。


グレンの答えに賛成してください。これはおそらく正しいコードです;-)

于 2008-09-04T23:11:57.640 に答える
7

以下を使用できます。

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
于 2013-03-02T18:33:26.220 に答える
5

intからstringへの明示的または暗黙的なキャストが存在しないため、直接キャストすることはできません。のような.ToString()を含むメソッドである必要があります。-

foreach (int i in intList) stringList.Add(i.ToString());

編集-または他の人がかなり見事に指摘しているように、intList.ConvertAll(delegate(int i){return i.ToString();});を使用しますが、明らかに.ToString()を使用する必要があり、これは変換ではなく変換ですキャスト。

于 2008-09-04T23:14:15.110 に答える
1

新しいリストを作成する必要があります。の基になるビット表現List<int>List<string>は完全に互換性がありません。たとえば、64ビットプラットフォームでは、個々のメンバーのサイズは同じではありません。

List<string>理論的にはaを-として扱うことは可能List<object>です。これにより、共変性と反変性のエキサイティングな世界に入ることができます。現在、C#またはVB.NETではサポートされていません。

于 2008-09-04T23:12:16.237 に答える