Bisakah Anda mentransmisikan List<int>
ke List<string>
entah bagaimana?
Saya tahu saya bisa mengulang dan .ToString () hal itu, tetapi pemeran akan luar biasa.
Saya di C # 2.0 (jadi tidak ada LINQ ).
Jawaban:
.NET 2.0 memiliki ConvertAll
metode di mana Anda dapat meneruskan fungsi konverter:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Diperbarui untuk 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
dikompilasi ke jenis IL yang sama seperti delegate(int x) { return x.ToString(); }
dalam kasus ini, yang penting adalah memiliki kompilator C # (versi C #) yang tahu apa =>
itu. Kerangka kerja dan runtime (versi .NET) tidak memerlukan fitur khusus untuk ini, jadi .NET 2.0 baik-baik saja di sini.
<string>
dan masih berhasil. Membuatnya hanyal1.ConvertAll(x => x.ToString());
Apakah C # 2.0 dapat dilakukan List<T>.Convert
? Jika demikian, saya pikir tebakan terbaik Anda adalah menggunakannya dengan seorang delegasi:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Sesuatu di sepanjang garis itu.
Beri suara positif pada jawaban Glenn, yang mungkin merupakan kode yang benar ;-)
Anda tidak akan bisa langsung mentransmisikannya karena tidak ada cast eksplisit atau implisit dari int ke string, itu harus menjadi metode yang melibatkan .ToString () seperti: -
foreach (int i in intList) stringList.Add(i.ToString());
Edit - atau seperti yang ditunjukkan orang lain dengan sangat cemerlang, gunakan intList.ConvertAll (delegate (int i) {return i.ToString ();});, namun jelas Anda masih harus menggunakan .ToString () dan ini adalah konversi daripada pemeran.
int
secara implisit atau eksplisit dapat dikonversi string
, itu tidak berarti bahwa List<int>
memiliki konversi implisit atau eksplisit ke List<string>
.
Anda harus membuat daftar baru. Representasi bit yang mendasari List<int>
dan List<string>
sama sekali tidak kompatibel - pada platform 64-bit, misalnya, anggota individu bahkan tidak berukuran sama.
Secara teoritis mungkin untuk memperlakukan a List<string>
sebagai List<object>
- ini membawa Anda ke dunia kovarians dan kontravarian yang menarik, dan saat ini tidak didukung oleh C # atau VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
ganti hasil parameter dan listOfInt ke parameter Anda