Відповіді:
.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());
x => x.ToString()компілюється до того ж типу IL, що і delegate(int x) { return x.ToString(); }в цьому випадку, важливим є наявність компілятора C # (версія C #), який знає, що =>таке. Фреймворк та час виконання (версія .NET) для цього не потребує спеціальних функцій, тому .NET 2.0 тут чудово працює.
<string>і це все ще працює. Це простоl1.ConvertAll(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(); });
Щось уздовж цих ліній.
Підтримайте відповідь Глена, яка, мабуть, є правильним кодом ;-)
Ви не зможете безпосередньо привести його, оскільки не існує явного або неявного приведення з int до рядка, це повинен бути метод, що включає .ToString (), такий як: -
foreach (int i in intList) stringList.Add(i.ToString());
Редагувати - або, як інші блискуче вказували, використовуйте intList.ConvertAll (делегат (int i) {return i.ToString ();}) ;, проте очевидно, що вам все одно потрібно використовувати .ToString (), і це перетворення, а не акторський склад
intвони явно або явно конвертовані в string, це не означає, що List<int>має неявне або явне перетворення в List<string>.
Ви повинні скласти новий список. Основні бітові подання List<int>та List<string>абсолютно несумісні - наприклад, на 64-бітовій платформі окремі члени навіть не однакового розміру.
Теоретично можна розглядати a List<string>як List<object>- це потрапляє у захоплюючі світи коваріації та контраваріації, і в даний час не підтримується C # або VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
замініть параметри result і listOfInt на ваші параметри