2010-01-30 16 views
14

Sto lavorando per migliorare le mie competenze in altre lingue, derivando dall'uso di C++ come mio linguaggio di programmazione primario. Il mio attuale progetto sta martellando C# .net, come ho sentito dire che è un buon linguaggio intermedio per chi conosce sia C++ che VB.net.Quale sarebbe un buon sostituto per il vettore C++ in C#?

In genere quando si lavora con un numero sconosciuto di elementi in C++ dichiarerei la mia variabile come un vettore e andrò da lì. I vettori non sembrano esistere in C#, e nel mio programma corrente ho usato invece arraylists, ma sto cominciando a chiedermi se è una buona abitudine usare arraylists mentre leggo da qualche parte che è stato un carryover da .net 1.0

Domanda lunga corta: qual è il tipo di elenco più utilizzato per C#?

+1

La risposta a questa si applica a qualsiasi linguaggio .NET (tra cui C++/CLI e F #), ci sono relativamente pochi tipi di dati per ogni lingua in. NETTO. – Richard

risposta

22

Se il target pre .NET versioni 2.0, utilizzare ArrayList

Se il target .NET 2.0+ quindi utilizzare tipo generico List<T>

Potrebbe essere necessario trovare sostituti per altri C++ contenitori standard, ecco possibile mappatura di C++ a .NET 2.0+ tipi o equivalenti simili:

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

Penso che 'std :: set' si associ più strettamente a' HashSet '. –

+0

+1 Sean, sembra un'alternativa migliore. – mloskot

+0

E le prestazioni di 'Lista ' in C#? È buono come 'std :: vector' in C++ ?! – Babak

0

Si consiglia di esplorare lo spazio dei nomi System.Collections, in particolare il set di oggetti System.Collections.Generics. La funzionalità integrata può essere fortemente tipizzata tra i vari elenchi, dizionari e NameValueCollections per fornire una vasta gamma di funzionalità. Sono anche estendibili, quindi se non fanno ESATTAMENTE ciò di cui hai bisogno, li estendi e aggiungi la nuova funzionalità.

0

Sarebbe List<T>, suppongo. ArrayList è il tipo non generico e, come hai osservato correttamente, un residuo di .NET 1 volte. A partire da .NET 2 è possibile utilizzare Generics e quindi List<T>.

0

Risposta breve: List<T>. Puoi trovare i documenti here.

Problemi correlati