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 ).
.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 sepertidelegate(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:Sesuatu di sepanjang garis itu.
Beri suara positif pada jawaban Glenn, yang mungkin merupakan kode yang benar ;-)
sumber
Kamu bisa memakai:
sumber
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: -
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.
sumber
int
secara implisit atau eksplisit dapat dikonversistring
, itu tidak berarti bahwaList<int>
memiliki konversi implisit atau eksplisit keList<string>
.Anda harus membuat daftar baru. Representasi bit yang mendasari
List<int>
danList<string>
sama sekali tidak kompatibel - pada platform 64-bit, misalnya, anggota individu bahkan tidak berukuran sama.Secara teoritis mungkin untuk memperlakukan a
List<string>
sebagaiList<object>
- ini membawa Anda ke dunia kovarians dan kontravarian yang menarik, dan saat ini tidak didukung oleh C # atau VB.NET.sumber
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
ganti hasil parameter dan listOfInt ke parameter Anda
sumber