Едва ли определенная подсказка, но общее руководство: проверьте свои источники. C++ является старым языком, и он изменился много за эти годы. Лучшие практики изменились с ним, но к сожалению существует все еще большая старая информация там. Были некоторые очень хорошие книжные рекомендации на здесь - я могу вторая покупка каждых из книг C++ Scott Meyers. Познакомьтесь с Повышением и со стилями кодирования, используемыми в Повышении - люди, связанные с тем проектом, находятся на передовом рубеже дизайна C++.
не перестраивают колесо. Познакомьтесь с STL и Повышением, и используйте их средства каждый раз, когда возможная прокрутка Ваше собственное. В частности, используйте строки STL и наборы, если Вы не имеете очень, очень серьезное основание не к. Узнайте auto_ptr и библиотеку интеллектуальных указателей Повышения очень хорошо, поймите, под которыми обстоятельствами каждый тип интеллектуального указателя предназначается, чтобы использоваться, и затем использовать интеллектуальные указатели везде, Вы, возможно, иначе использовали необработанные указатели. Ваш код будет так же эффективен и намного менее подвержен утечкам памяти.
Использование static_cast, dynamic_cast, const_cast, и reinterpret_cast вместо бросков C-стиля. В отличие от бросков C-стиля они сообщат, просите ли Вы действительно другой тип броска, чем Вы думать, что Вы просите. И они выделяются визуально, предупреждая читателя, что бросок происходит.
Попробуйте
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
FYI, метод Foreach принимает действие (принимает T и возвращает void) в качестве параметра, а лямбда-выражение возвращает строку в виде строки. Обрезка возвращает строку
Каждое расширение предназначен для изменения состояния объектов в коллекции. Поскольку строки неизменяемы, это не повлияет.
Надеюсь, это поможет; o)
Седрик
Метод ForEach
ничего не возвращает, поэтому вы не можете присвоить это переменной.
Используйте метод расширения Select
вместо этого:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
Поскольку p.Trim () возвращает новую строку.
Вам необходимо использовать:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();