Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

L'IntelliSense

Suggerimenti che cercano le iniziali, le sottostringhe contenute nei nomi e che ci aiutano a dichiarare classi e metodi
Suggerimenti che cercano le iniziali, le sottostringhe contenute nei nomi e che ci aiutano a dichiarare classi e metodi
Link copiato negli appunti

In questa lezione esaminiamo alcune importanti novità introdotte nell'intellisense, funzionalità senza la quale ogni sviluppatore è "perduto".

La logica del "contiene"

La prima importante novità sta nel fatto che intellisense non ragiona più con la logica "inizia per" ma con la logica "contiene". Per questa ragione, se stiamo lavorando con un oggetto SqlConnection e ci ricordiamo che esiste una proprietà che regola il Timeout, basta iniziare a scrivere Tim e subito ci viene presentata la proprietà che stiamo cercando, anche se in realtà si chiama ConnectionTimeout.

Figura 11. Il suggerimento mostra i metodi/proprietà che contengono il testo digitato
Il suggerimento mostra i metodi/proprietà che contengono il testo digitato

Abbreviazioni e riconoscimento del 'casing'

L'intellisense è ora in grado di interpretare alcune 'sigle' mentre digitiamo, grazie alla convenzione del casing, per il quale le parole composte vengono scritte senza spazi ma con il primo carattere maiuscolo (PascalCase, caso particolare di CamelCase). L'IDE si serve delle iniziali (lettere maiuscole) delle classi per suggerirci come completare le nostre espressioni.

Ad esempio, sempre per l'oggetto SqlConnection, poniamo il caso di ricordare che esiste qualche metodo che permette di interagire con il LifetimeService, potremmo digitare in maiuscolo LS ed ottenere questo risultato:

Figura 12. Intellisense avanzato, riconoscimento del casing
Intellisense avanzato, riconoscimento del casing

L'intellisense, sapendo che le iniziali di ogni parola che compone un membro di classe è maiuscola, quando digitiamo LS cerca un membro composto da due o più parole di cui due iniziano per L ed S.

Consume first: generazione di classi "al volo"

Vediamo cosa accade se tentiamo di utilizzare una classe chiamata MyNewClass che attualmente non esiste nel progetto:

Figura 13. Consume first intellisense
Consume first intellisense, l'intellisense è in grado di presupporre ciò che vogliamo fare in futuro

L'intellisense ce la propone come se fosse in realtà già stata dichiarata. Al termine della digitazione, nel menu contestuale si può scegliere di generare la nuova classe, d'altra parte se questo è quello che il programmatore ha digitato, probabilmente è quello che vuole.

Figura 14. Creare al volo la classe
L'intellisense ci permette di creare al volo la classe.

Ora che la nuova classe è stata creata, se scriviamo "mnc.", l'intellisense ci propone gli unici metodi attualmente disponibili per la classe, quelli ereditati da System.Object. Premendo CTRL+ALT+SPACE, però, l'intellisense presenta una interfaccia leggermente differente, in cui la prima opzione lista quello che si sta digitando.

Figura 15. Consume-first intellisense
Consume-first intellisense

Ora l'intellisense è in Consume-first mode, per cui presuppone che tutto quello che digitiamo sia corretto, anche se non esiste ancora. Questa feature è di aiuto ad esempio nel Test Driven Developement. Possiamo infatti digitare una chiamata ad un metodo inesistente e poi, grazie allo stesso menu contestuale, far generare a Visual Studio uno stub valido nella classe.

mnc.MyNewMethod(12, "pippo");
...
internal void MyNewMethod(int p, string p_2)
{
  throw new NotImplementedException();
}

Tutti i metodi autogenerati lanciano una eccezione perché debbono poi essere completati.

Ti consigliamo anche