Что было бы хорошей заменой для С++-вектора в С#?
Я работаю над улучшением своих навыков на других языках, начиная с использования С++ в качестве основного языка программирования. Мой текущий проект забивает С#.net, поскольку я слышал, что это хороший промежуточный язык для тех, кто знает как С++, так и VB.net.
Обычно при работе с неизвестным числом элементов в С++ я объявляю свою переменную как вектор и просто оттуда. Векторы, похоже, не существуют в С#, и в моей текущей программе вместо этого я использую arraylists, но я начинаю задаваться вопросом, хорошая ли привычка использовать arraylists, когда я где-то читал, что это перенос из .net 1.0
Долго короткий вопрос - какой наиболее часто используемый тип листинга для С#?
Ответы
Ответ 1
Если вы настроили таргетинг на версии .NET 2.0, используйте ArrayList
Если вы нацелились на .NET 2.0+, используйте общий тип List<T>
Вам может потребоваться найти замены для других стандартных контейнеров С++, поэтому здесь возможно сопоставление С++ и .NET 2.0+ с аналогичными типами или эквивалентами:
std::vector - List<T>
std::list - LinkedList<T>
std::map - Dictionary<K, V>
std::set - HashSet<T>
std::multimap - Dictionary<K, List<V>>
Ответ 2
Я бы порекомендовал вам изучить пространство имен System.Collections, особенно набор объектов System.Collections.Generics. Встроенная функциональность может быть строго типизирована в различных списках, словарях и NameValueCollections, чтобы предоставить вам широкий спектр возможностей. Они также расширяемы, поэтому, если они не делают ТОЧНО, что вам нужно, вы просто расширяете их и добавляете новые функции.
Ответ 3
Это будет List<T>
, я полагаю. ArrayList
- это не-общий тип и, как вы правильно заметили, остался с .NET 1 раз. Начиная с .NET 2 вы можете использовать Generics и, следовательно, List<T>
.
Ответ 4
Короткий ответ: List<T>
. Здесь вы можете найти документы .