Data la mole di gente che non usa o non sa usare IntelliSense, ho deciso di scrivere questo capitolo in
più per spiegare l'utilizzo di questa funzione vitale del compilatore.
Attivare IntelliSense
Per attivare IntelliSense in Visual Studio o Visual Basic Express, sotto la voce Tools (Strumenti),
scegliere Options (opzioni), quindi selezionare ed espandere la voce Text Editor e aprire il pannello Basic,
come mostrato in figura:

Il pannello Basic, nelle opzioni
Assicuratevi che le voci "Auto list members" e "Parameter information" siano spuntate, quindi premete OK.
Ora, ogniqualvolta dovrete scegliere un tipo, accedere ai membri di una classe, passare parametri ad un metodo
e molto altro, IntelliSense vi dar? suggerimenti mostrando una lista di tutte le possibili scelte che potete
fare (fornendo anche una descrizione di ogni possibilità). Alcuni esempi:

Scelta del tipo di una variabile

Accesso ai membri di un oggetto

Passaggio di parametri a un metodo

Assegnazione di valori a un enumeratore
Ora che avete visto le potenzialità di IntelliSense spero che inizierete ad utilizzarlo, o almeno,
proseguiate nella lettura.
IntelliSense distingue i membri di classe
Tutte le icone che IntelliSense usa per contrassegnare gli oggetti della lista dei suggerimenti non sono
assolutamente messe a caso. Hanno un significato ben preciso:
 Campo (variabile)  Costante o Valore di enumeratore  Metodo  Proprietà  Struttura  Enumeratore  Interfaccia  Classe  Namespace  Modulo  Delegato  Evento  Operatore  Tipo base (String, Byte, Short, Integer, Long, Single, Double,
Boolean, Date, Object, SByte e Char). In alcuni casi, ad esempio nell'autocompletamente degli statement "Exit" (come Exit For,
Exit Do, Exit Sub, eccetera...), indica lo statement stesso. Nell'autocompletamento di VB2008, indica
anche ogni parola chiave
Inoltre, sempre tramite le icone, è possibile inferire il livello di accesso di cui ogni membro
è dotato. Infatti, l'icona di ognuna delle categorie sopra citate può essere modificata
con l'aggiunta di un piccolo simbolo in basso a sinistra:
 Il piccolo rombo azzurro indica che il membro è Friend  La piccola chiave gialla indica che il membro è Protected  Il piccolo lucchetto grigio indica che il membro è Private
Se il membro è Public, non avrà nessun simbolo aggiuntivo. Invece, per i membri Protected Friend
si assume come simbolo lo stesso di quelli Protected.
IntelliSense suggerisce i parametri di ogni metodo
Quando vi è stato suggerito di usare un metodo, non occorre che vi facciate dire anche quali devono
essere i suoi parametri, poiché IntelliSense ve li suggerisce automaticamente, corredandoli, qualora
sia possibile, di una descrizione. Ad esempio, questo codice:
Dim B As New Bitmap()
restituirà un errore: "Overload resolution failed because no accessible New accepts this number of
arguments", ossia stiamo tentando di usare un costruttore senza parametri quando la classe in questione non
espone nessun New senza parametri. Perciò dobbiamo obbligatoriamente passare un qualche argomento
al costruttore, ma non sapiamo quale. Basta aprire la parentesi dopo Bitmap per vedere la lista di suggerimenti
fornita da IntelliSense:

come si vede ci sono ben 12 overload, ossia 12 versioni dello stesso metodo e ognuna di questa ha una sua
descrizione. Alla fine, sicuramente troveremmo quello che stiamo cercando, ad esempio l'overload 12, che è
quello più semplice e che ci consente di inizializzare una nuova bitmap con date dimensioni, oppure
il 5, con un solo parametro di tipo stringa che contiene il nome del file. Insomma, tutto quello che è
documentato su msdn lo potete trovare anche usando l'IntelliSense.
IntelliSense permette di trovare classi e funzioni nuove
Una funzione meno canonica, ma sicuramente altrettanto utile, di IntelliSense sta nel fatto che, grazie
alla lista di suggerimenti forniti nella determinazione del tipo di una variabile, potete esplorare TUTTE
le classi ESISTENTI sul vostro computer (ovviamente quelle importante nell'applicazione corrente). Solo
guardandone il nome potete cercare di capire la loro funzione e, con qualche ricerca, trovare quello che
vi interessa. Ad esempio, girovaghiamo per System.Net... troviamo un interessante namespace NetworkInformation e
vi scorgiamo numerose classi che iniziano con "Ping": abbiamo trovato il luogo giusto per eseguire un ping
da codice. Provando a inizializzare un nuovo oggetto Net.NetworkInformation.Ping non si ottengono errori,
quindi se ne possono esplorare le funzioni. Salta subito all'occhio la funzione Send, grazie alla quale
possiamo ottenere molte informazioni utili sul viaggio dei nostri pacchetti in rete. Non c'era neanche bisogno
di cercare su Internet!
IntelliSense è vostro amico
Quindi non fate a meno di usarlo e imparate a sfruttarne tutte le potenzialità, sempre e comunque! |