2011-10-27 8 views
7

Sono un programmatore Java che apprende C# in questi giorni.Interfaccia elenco: da Java a C#

Di solito in Java quando si usano le liste, dovrebbe essere preferibile programmazione contro la sua interfaccia, al fine di passare tra le implementazioni:

List<Object> list = new ArrayList<Object>(); 
//or 
list = new LinkedList<Object>(); 

Che dire di C#? Esiste un approccio simile? Qualcuno può mostrarmi un esempio? Dal momento che ora sto costruendo una lista in questo modo, ma non credo List è un'interfaccia:

List<int> list = new List<int>(); 
list.Add(2); 

risposta

8

In .NET è anche preferibile lavorare con la massima oggetto possibile nella gerarchia. È possibile utilizzare l'interfaccia IList<T>:

IList<int> list = new List<int>(); 
list.Add(2); 

E se non è necessario per accedere alla lista per indice si potrebbe anche utilizzare l'interfaccia ICollection<T> che è ancora più elevato nella gerarchia.

O se desideri solo per enumerare l'elenco è possibile utilizzare il più alto di interfaccia possibile, che è IEnumerable<T>:

IEnumerable<int> list = new List<int>(new[] { 1, 2, 3 }); 
foreach(int item in list) 
{ 
    ... 
} 
1
IList<int> = new List<int>(); 

in C# è facile - se inizia con un I la sua interfaccia.

1

List<T> implementa un numero di interfacce, tra cui IList<T> e ICollection<T>. Potrebbe essere necessario esaminare il codice per determinare quale interfaccia è più appropriata.

+0

grazie ... potresti spiegare la differenza tra IList e ICollection in poche parole? – Heisenbug

+0

@Heisenbug - Ho collegato alla loro documentazione, e @Darin ha già spiegato una differenza chiave - che un 'IList ' supporta l'accesso indicizzato. –