Что было бы хорошей заменой для С++-вектора в С#?

Я работаю над улучшением своих навыков на других языках, начиная с использования С++ в качестве основного языка программирования. Мой текущий проект забивает С#.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>. Здесь вы можете найти документы .