IList <тип> к IList <базовый тип>

string s = "A,B,C";
string replaced = "'"+s.Replace(",", "','")+"'";

спасибо за комментарии, я пропустил внешние кавычки.

, Конечно.. если бы источник был пустой строкой, Вы хотели бы дополнительные кавычки вокруг этого или нет? И что, если вход был набором пробелов...? Я имею в виду, для предоставления 100%-го полного решения, которое я, вероятно, попросил бы списка модульных тестов, но я надеюсь, что мой инстинкт пищеварительного тракта ответил базовый вопрос.

Обновление : основанная на LINQ альтернатива была также предложена (с дополнительным преимуществом использования Строки. Формат и поэтому не имеющий необходимость волноваться о продвижении/запаздывании кавычек):

string list = "Fred,Sam,Mike,Sarah";
string newList = string.Join(",", list.Split(',').Select(x => string.Format("'{0}'", x)).ToList());
9
задан Kyle 18 June 2013 в 16:29
поделиться

6 ответов

Используйте IEnumerable .Cast :

IList<Vehicle> vehicles = cars.Cast<Vehicle>().ToList();

В качестве альтернативы вы можете избежать преобразования в список в зависимости от вашего желания для обработки исходного списка автомобилей.

20
ответ дан 4 December 2019 в 06:16
поделиться

Вы столкнулись с проблемой ограниченной ко- и контравариантности в C #. В C # 4.0 есть интересный подход, описанный здесь, в самом конце . Однако это создает некоторые другие ограничения, связанные с проблемой грузовика в ответе Novelocrat.

4
ответ дан 4 December 2019 в 06:16
поделиться

Такой полиморфизм, который позволяет вам приводить IList на IList небезопасно, потому что это позволит вам вставить Truck в ваш IList .

.
11
ответ дан 4 December 2019 в 06:16
поделиться

Вот несколько подходов с использованием Linq:

IList<Derived> list = new List<Derived>();
list.Add(new Derived());

IList<Base> otherlist = new List<Base>(from item in list select item as Base);
IList<Base> otherlist2 = new List<Base>(list.Select(item => item as Base));
3
ответ дан 4 December 2019 в 06:16
поделиться

Вы также можете взглянуть на статью Кшиштофа Cwalina, Simulated Covariance for .NET Generics

2
ответ дан 4 December 2019 в 06:16
поделиться
var vehicles = cars.OfType<IVehicle>()
1
ответ дан 4 December 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: