Bir döküm Can List<int>
için List<string>
nasılsa?
Dönüp .ToString () yapabileceğimi biliyorum, ama oyuncu kadrosu harika olurdu.
C # 2.0'deyim (yani LINQ yok ).
Yanıtlar:
.NET 2.0, ConvertAll
bir dönüştürücü işlevini geçirebileceğiniz bir yönteme sahiptir :
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
2010 için güncellendi
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
, delegate(int x) { return x.ToString(); }
bu durumda olduğu gibi aynı tür IL'ye derlendiğinden , önemli olan, ne olduğunu bilen bir C # derleyicisine (C # sürümü) sahip olmaktır =>
. Çerçeve ve çalışma zamanı (.NET sürümü) bunun için özel bir özelliğe ihtiyaç duymaz, bu nedenle .NET 2.0 burada iyidir.
<string>
ve hala çalışıyor. Sadece yapıyorl1.ConvertAll(x => x.ToString());
C # 2.0 yapabilir List<T>.Convert
mi? Öyleyse, en iyi tahmininiz bunu bir temsilciyle kullanmak olacaktır:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Bu çizgide bir şey.
Glenn'in cevabına olumlu oy verin, bu muhtemelen doğru koddur ;-)
Hiçbir açık veya örtülü döküm dizeye int den var olduğu doğrudan dökmeyi Bunu olur, mümkün olmaz sahip gibi .ToString () kapsayan bir yöntem olması: -
foreach (int i in intList) stringList.Add(i.ToString());
Edit - ya da diğerlerinin oldukça zekice belirttiği gibi, intList.ConvertAll (delegate (int i) {return i.ToString ();}) kullanın; ancak yine de açıkça .ToString () kullanmanız gerekir ve bu, bir döküm.
int
örtük veya açık dönüştürülebilir olduğunu için string
, bu anlamına gelmez List<int>
bir örtülü veya açık dönüştürme vardır List<string>
.
Yeni bir liste oluşturmanız gerekiyor. Temeldeki bit temsilleri List<int>
ve List<string>
tamamen uyumsuz - örneğin 64 bitlik bir platformda, bireysel üyeler aynı boyutta bile değildir.
A List<string>
olarak ele almak teorik olarak mümkündür List<object>
- bu sizi heyecan verici kovaryans ve kontravarans dünyalarına götürür ve şu anda C # veya VB.NET tarafından desteklenmemektedir.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
sonucunu ve listOfInt parametrelerini kendi parametrelerinizle değiştirin
İnt List'den string List'e dönüştürme, olağan ToString () 'in yanı sıra iki ek yolla yapılabilir. Sizi daha çok memnun eden birini seçin.
var stringlist = intlist.Select(x=>""+x).ToList();
Veya ayrıca:
var stringlist = intlist.Select(x=>$"{x}").ToList();
Ve nihayet geleneksel:
var stringlist = intlist.Select(x=>x.ToString()).ToList();