2010-01-30 9 views
14

Estoy trabajando para mejorar mis habilidades en otros idiomas, al utilizar C++ como mi lenguaje de programación principal. Mi proyecto actual es trabajar duro con C# .net, ya que he oído que es un buen lenguaje intermedio para alguien que conoce tanto C++ como VB.net.¿Cuál sería un buen reemplazo para el vector C++ en C#?

Normalmente, cuando se trabaja con un número desconocido de elementos en C++ declaro mi variable como un vector y simplemente voy desde allí. Los vectores no parecen existir en C#, y en mi programa actual he estado utilizando listas de arreglos, pero estoy empezando a preguntarme si es un buen hábito usar listas de arreglos cuando leo en algún lugar que era un remanente de .NET 1.0

Pregunta larga corta: ¿cuál es el tipo de listado más comúnmente usado para C#?

+1

La respuesta a esto se aplicará a cualquier lenguaje .NET (incluyendo C++/CLI y F #), hay relativamente pocos tipos de datos por idioma en. RED. – Richard

Respuesta

22

Si el público pre .NET versiones 2.0, utilice ArrayList

Si se dirige a .NET 2.0+ a continuación, utilizar el tipo genérico de List<T>

Puede que tenga que encontrar sustitutos para los otros C++ contenedores estándar, asi que aquí hay posible asignación de C++ para .NET 2.0+ tipos o equivalentes similares:

std::vector - List<T> 
std::list - LinkedList<T> 
std::map - Dictionary<K, V> 
std::set - HashSet<T> 
std::multimap - Dictionary<K, List<V>> 
+3

Creo que 'std :: set' se correlacionaría más estrechamente con' HashSet '. –

+0

+1 Sean, parece una mejor alternativa. – mloskot

+0

¿Qué pasa con el rendimiento de 'List ' en C#? ¿Es tan bueno como 'std :: vector' en C++ ?! – Babak

0

Le recomendaría que explore el espacio de nombres System.Collections, especialmente el conjunto de objetos System.Collections.Generics. La funcionalidad incorporada se puede escribir fuertemente a través de varias listas, diccionarios y NameValueCollections para proporcionarle una amplia gama de capacidades. También son extensibles, de modo que si no hacen EXACTAMENTE lo que necesita, simplemente amplíelos y agregue la nueva funcionalidad.

0

Eso sería List<T>, supongo. ArrayList es el tipo no genérico y, como correctamente observó, restos de .NET 1 veces. Comenzando con .NET 2 puede usar Generics y por lo tanto List<T>.

0

Respuesta corta: List<T>. Puede encontrar los documentos here.

Cuestiones relacionadas