L'elenco generico utile in VB.NET

click fraud protection

I generici estendono la potenza e la flessibilità di VB.NET in molte aree, ma si ottengono maggiori vantaggi in termini di prestazioni e più opzioni di programmazione in generale Elenco oggetto [Elenco (di T)] rispetto a qualsiasi altro.

Usare Elenco (di T), devi capire come implementare i numerosi metodi forniti da .NET Framework. Di seguito sono riportati tre esempi di utilizzo Per ciascuno, Trova tutto, e Ordinare, ciò dimostra come il generico Elenco opere di classe.

Il primo passo è creare un generico Elenco. Puoi ottenere i dati in molti modi, ma il più semplice è semplicemente Inserisci esso. Il codice seguente mostra come classificare la mia collezione di birra e vino!

Codice di partenza

Per prima cosa deve esserci un oggetto che rappresenterà una bottiglia della collezione. In un'applicazione Windows Form, la classe Form deve essere prima in un file o il designer di Visual Studio non funzionerà correttamente, quindi mettilo alla fine:

Bottiglia di classe pubblica. Marchio pubblico come stringa. Nome pubblico come stringa. Categoria pubblica come stringa. Dimensione pubblica come decimale. Public Sub Nuovo (_. ByVal m_Brand As String, _. ByVal m_Name As String, _. ByVal m_Category As String, _. ByVal m_Size As Decimal) Marchio = m_Brand. Nome = m_Name. Categoria = m_Categoria. Dimensione = m_Dimensione. End Sub. End Class
instagram viewer

Per creare la raccolta, Inserisci gli oggetti. Questo è ciò che è in Caricamento modulo evento:

Armadio dim come elenco (di bottiglia) = _. "Nuova lista (di bottiglia) Consiglio dei ministri. Aggiungi (nuova bottiglia (_. "Castle Creek", _. "Uintah Blanc", _. "Vino", 750)) Consiglio dei ministri. Aggiungi (nuova bottiglia (_. "Zion Canyon Brewing Company", _. "Springdale Amber Ale", _. "Birra", 355)) Consiglio dei ministri. Aggiungi (nuova bottiglia (_. "Spanish Valley Vineyards", _. "Syrah", _. "Vino", 750)) Consiglio dei ministri. Aggiungi (nuova bottiglia (_. "Wasatch Beers", _. "Polygamy Porter", _. "Birra", 355)) Consiglio dei ministri. Aggiungi (nuova bottiglia (_. "Squatters Beer", _. "Provo Girl Pilsner", _. "Birra", 355))

Tutto il codice sopra è un codice standard in VB.NET 1.0. Tuttavia, si noti che definendo il proprio Bottiglia Oggetto, ottieni i vantaggi di più tipi nella stessa raccolta (in questo caso, entrambi Corda e Decimale) ed efficiente, digita "late binding" sicuro.

Per ogni esempio

Il divertimento inizia quando usiamo i metodi. Per iniziare, implementiamo il familiare Per ciascuno metodo. La documentazione di Microsoft include questa definizione di sintassi di utilizzo:

Dim istanza come elenco Dim azione come azione (Of T) istanza. ForEach (azione)

Microsoft definisce ulteriormente azione come "delegare a un metodo che esegue un'azione sull'oggetto passato ad esso. Gli elementi dell'elenco corrente (T) vengono passati individualmente al delegato all'azione (T). "

Mancia: Per ulteriori informazioni sui delegati, leggi Utilizzo dei delegati in Visual Basic .NET per la flessibilità di runtime.

La prima cosa che devi codificare è il metodo che verrà delegato. Fraintendere questo punto chiave è la fonte di maggior parte della confusione degli studenti VB.NET. Questa funzione, o subroutine, è dove viene eseguita tutta la codifica personalizzata per gli oggetti di tipo "Of".

Se eseguito correttamente, il gioco è fatto. È davvero semplice in questo primo esempio. Un'intera istanza di Bottiglia viene passato e la subroutine seleziona qualsiasi elemento necessario da esso. Coding the Per ciascuno è di per sé semplice. Basta inserire l'indirizzo del delegato usando il AddressOf metodo.

Display secondario Bottone (ByVal b come bottiglia) Elenco dei risultati. Elementi. Aggiungi (_ b. Marchio & "-" & _ b. Nome e "-" & _ b. Categoria & "-" & _ b. Dimensione) Sottotitolo Sottotitoli privati ​​ForEachButton_Click (... Risultante. Elementi. Clear () ResultList. Elementi. Aggiungi ("per ogni esempio") Elenco risultati. Elementi. Aggiungi ("") Cabinet. ForEach (AddressOf displayBottle) End Sub

Trova tutti gli esempi

Trova tutto è un po 'più complicato. La documentazione di Microsoft per Trova tutto Somiglia a questo:

Dim istanza come elenco Dim match come predicato (Of T) Dim returnValue As List (Of T) returnValue = istanza. Trova tutto (partita)

Questa sintassi include un nuovo elemento, Predicato (di T). Secondo Microsoft, questo rappresenterà il metodo "che definisce un insieme di criteri e determina se il l'oggetto specificato soddisfa tali criteri. "In altre parole, puoi creare qualsiasi codice che trovi qualcosa nel file elenco. Ho codificato il mio Predicato (di T) trovare qualcosa nella "Birra" Categoria.

Invece di chiamare il codice delegato per ciascun elemento nell'elenco, Trova tutto restituisce un intero Elenco (T) contenente solo le partite che risultano dal tuo Predicato (di T). Sta al tuo codice definire entrambi in questo secondo Elenco (T) e farci qualcosa. Il mio codice aggiunge semplicemente gli elementi a ListBox.

Sottotitoli privati ​​FindAllButton_Click (mittente ByVal come sistema. Oggetto, ByVal e As System. EventArgs) Gestisce FindAllButton. Fai clic su Elenco risultati. Elementi. Clear () ResultList. Elementi. Aggiungi ("Trova esempio") Elenco risultati. Elementi. Aggiungi ("") Sottomenu Dim Elenco come lista (di bottiglia) sottoelenco = Cabinet. FindAll (AddressOf findBeer) per ogni r come bottiglia nella lista secondaria ResultList. Elementi. Aggiungi (_ r. Marchio & "-" & _ r. Nome e "-" & _ r. Categoria & "-" & _ r. Dimensione) Next End Sottofunzione findBeer (ByVal b As Bottle) _ As Boolean If (b. Categoria = "Birra") Quindi restituisce True Else Restituisce False End If End Function

Esempio di ordinamento

Il metodo finale che questo articolo esamina è Ordinare. Ancora una volta, Microsoft utilizza una terminologia che potrebbe non essere familiare. In realtà ci sono quattro diversi sovraccarichi di Ordinare metodo:

  • Ordinare()
  • Ordina (IComparer (T))
  • Ordina (confronto (T))
  • Ordina (Int32, Int32, IComparer (T))

Ciò consente di utilizzare i metodi di ordinamento definiti in .NET Framework per l'elenco, codificare i propri, utilizzare un sistema confronto definito per il tipo o ordina parte della raccolta utilizzando una posizione iniziale e un conteggio parametro.

In questo esempio, poiché utilizzo la sintassi seguente per eseguire effettivamente l'ordinamento, sto utilizzando il terzo sovraccarico.

X. Name.x. Nome. CompareTo (y. Nome) (y. Nome)

Ho codificato un altro delegato sul mio comparatore. Dal momento che voglio ordinare in base al mio Nome, Estraggo proprio quel valore da ogni istanza di Bottiglia oggetto che viene passato e utilizzare il Ordina (confronto )>)). Il Ordinare il metodo in realtà riorganizza l'originale Elenco (T). Questo è ciò che viene elaborato dopo l'esecuzione del metodo.

Sottotitolo privato SortButton_Click (mittente ByVal come sistema. Oggetto, ByVal e As System. EventArgs) Gestisce SortButton. Fai clic su Elenco risultati. Elementi. Clear () ResultList. Elementi. Aggiungi ("Ordina esempio") Elenco risultati. Elementi. Aggiungi ("") Cabinet. Sort (AddressOf sortCabinet) per ogni r come elenco risultati nella finestra del cabinet. Elementi. Aggiungi (_ r. Nome e "-" & _ r. Marchio & "-" & _ r. Categoria & "-" & _ r. Dimensione) Next End Sottofunzione privata condivisa sortCabinet (_ ByVal x As Bottle, ByVal y As Bottle) As Intero Return x. Nome. CompareTo (y. Nome) Fine funzione

Questi metodi sono stati selezionati per dimostrare i principali modi in cui i metodi Framework sono inclusi Elenco (T) sono effettivamente codificati. C'è comunque una miriade di altri metodi. Questo è ciò che rende Elenco (T) così utile!

instagram story viewer