IntelliSense per C#
IntelliSense C# è un supporto per il completamento del codice specifico del linguaggio. È disponibile quando si scrive codice C# nell'editor di codice ed è possibile eseguirne il debug nella finestra di comando Modalità immediata.
Elenchi di completamento
Gli elenchi di completamento di IntelliSense in C# contengono token di Elenca membri, Completa parola e altri ancora. Forniscono funzionalità di accesso rapido a:
Membri di un tipo o spazio dei nomi
Nomi di variabili, comandi e funzioni
Frammenti di codice
Parole chiave del linguaggio
Metodi di estensione
Gli elenchi di completamento in C# filtrano i token irrilevanti e preseleziona i token in base al contesto. Per altre informazioni, vedere Elenchi di completamento filtrati.
Frammenti di codice negli elenchi di completamento
In C#, l'elenco di completamento include frammenti di codice che consentono di inserire facilmente corpi predefiniti di codice nel programma. I frammenti di codice vengono visualizzati nell'elenco di completamento come testo del collegamento del frammento di codice. Per altre informazioni sui frammenti di codice disponibili per impostazione predefinita in C#, vedere Frammenti di codice C#.
Parole chiave del linguaggio negli elenchi di completamento
L'elenco di completamento include parole chiave del linguaggio C# che consentono di inserirle nel programma. Per altre informazioni sulle parole chiave del linguaggio C#, vedere Parole chiave di C#.
Metodi di estensione negli elenchi di completamento
In C# l'elenco di completamento include i metodi estensione che rientrano nell'ambito.
I metodi di estensione usano un'icona diversa rispetto ai metodi di istanza. Se un metodo di istanza e un metodo di estensione con lo stesso nome sono entrambi inclusi in un ambito, nell'elenco di completamento viene visualizzata l'icona del metodo di estensione.
Nota
Per String gli oggetti, l'elenco di completamento non visualizza tutti i metodi di estensione.
Elenchi di completamento filtrati
I membri non necessari vengono rimossi dall'elenco di completamento IntelliSense usando dei filtri. In C# vengono filtrati gli elenchi di completamento disponibili per le voci riportate di seguito:
Interfacce e classi di base: IntelliSense rimuove automaticamente gli elementi non necessari dagli elenchi di completamento dell'interfaccia e della classe di base. Questa rimozione include le basi della dichiarazione di classe e elenchi di interfacce e elenchi di vincoli. Ad esempio, le enumerazioni non vengono visualizzate nell'elenco di completamento per le classi di base, perché le enumerazioni non possono essere usate per le classi di base. L'elenco di completamento delle classi di base contiene solo interfacce e spazi dei nomi. Se si seleziona un elemento nell'elenco e quindi si digita una chiave virgola, IntelliSense rimuove le classi di base dall'elenco di completamento. Lo fa perché C# non supporta l'ereditarietà multipla. Lo stesso comportamento si verifica anche per le clausole di vincolo.
Attributi: quando si applica un attributo a un tipo, l'elenco di completamento viene filtrato in modo che l'elenco contenga solo i tipi discendenti dagli spazi dei nomi che contengono tali tipi. Ad esempio: Attribute.
Clausole Catch: nell'elenco di completamento vengono visualizzate solo parole chiave try-catch valide.
Inizializzatori di oggetti: solo i membri che possono essere inizializzati vengono visualizzati nell'elenco di completamento.
parola chiave new: quando si digita
new
e quindi si preme il tasto Spazio , viene visualizzato un elenco di completamento. IntelliSense seleziona automaticamente un elemento nell'elenco, in base al contesto nel codice. Ad esempio, IntelliSense seleziona automaticamente gli elementi nell'elenco di completamento per le dichiarazioni e per le istruzioni return nei metodi.Parola chiave enum: quando si preme il tasto Spazio dopo un segno di uguale per un'assegnazione di enumerazione, viene visualizzato un elenco di completamento. IntelliSense seleziona automaticamente un elemento nell'elenco, in base al contesto nel codice. Ad esempio, IntelliSense seleziona automaticamente gli elementi nell'elenco di completamento dopo aver digitato la
return
parola chiave e quando si crea una dichiarazione.operatori as e is: IntelliSense visualizza automaticamente un elenco di completamento filtrato quando si preme il tasto Spazio dopo aver digitato la
as
parola chiave ois
.Eventi: quando si digita la parola chiave
event
, l'elenco di completamento contiene solo tipi delegati.Guida ai parametri: IntelliSense ordina automaticamente il primo overload del metodo che corrisponde ai parametri immessi. Se sono disponibili più overload di metodi, è possibile usare le frecce verso l'alto e verso il basso per selezionare il successivo overload possibile in elenco.
Membri utilizzati più di recente
IntelliSense ricorda i membri selezionati di recente nella casella Elenco membri popup per il completamento automatico del nome dell'oggetto. Al successivo utilizzo di Elenco membri, i membri usati di recente vengono visualizzati nella parte superiore. IntelliSense cancella la cronologia dei membri usati più di recente tra ogni sessione di Visual Studio.
override
Quando si digita l'override e quindi si preme il tasto Spazio , IntelliSense visualizza tutti i membri della classe di base validi di cui è possibile eseguire l'override in una casella di riepilogo popup. Digitando il tipo restituito del metodo dopo override
viene richiesto a IntelliSense di visualizzare solo i metodi che restituiscono lo stesso tipo. Se IntelliSense non riesce a trovare corrispondenze, vengono visualizzati tutti i membri della classe di base.
IntelliSense migliorato per intelligenza artificiale
Visual Studio IntelliCode include elenchi di completamento di IntelliSense migliorati per intelligenza artificiale. IntelliCode prevede l'API più idonea da usare, invece di presentare semplicemente un elenco alfabetico di membri. Usa il contesto e i criteri del codice correnti per fornire l'elenco dinamico.
Generazione automatica di codice
Aggiungi using
L'operazione Add using IntelliSense aggiunge automaticamente le direttive necessarie using
al file di codice. Questa funzionalità consente di mantenere l'attenzione sul codice che si sta scrivendo anziché richiedere di spostare lo stato attivo su un'altra parte del codice.
Per avviare l'operazione Aggiungi utilizzando , posizionare il cursore su un riferimento al tipo che non può essere risolto. Ad esempio, quando si crea un'applicazione console e quindi si aggiunge XmlReader
al corpo del Main
metodo, viene visualizzata una riga ondulata rossa su tale riga di codice perché il riferimento al tipo non può essere risolto. È quindi possibile richiamare l'operazione Aggiungi usando tramite il menu Azioni rapide. La voce di menu using <namespace> è visibile solo quando il cursore viene posizionato sul riferimento non risolto.
Per questo esempio, per aggiungere automaticamente la using
direttiva al codice, selezionare l'icona della lampadina di errore e quindi scegliere con System.Xml;.
Aggiungi direttive using mancanti dopo operazione Incolla
IntelliSense può aggiungere automaticamente direttive mancanti using
al codice quando si incolla un tipo nel file di codice. Questa funzionalità consente di risparmiare tempo automatizzando l'attività di aggiunta di direttive using mancanti quando si incolla un tipo in un file.
Per abilitare questa funzionalità:
- Selezionare Opzioni strumenti>.
- Selezionare Editor>di testo C# (o Visual Basic) >Avanzate nel riquadro sinistro.
- In Direttive Using selezionare Aggiungi direttive using mancanti incollare.
Opzione Rimuovi e ordina using
L'opzione Rimuovi e ordina using consente di ordinare e rimuovere le dichiarazioni using
e extern
senza modificare il comportamento del codice sorgente. Nel corso del tempo, i file di origine potrebbero diventare troppo grandi e difficili da leggere a causa di direttive non necessarie e non organizzate using
. L'opzione Rimuovi e ordina using compatta il codice sorgente rimuovendo le direttive using
inutilizzate e migliora la leggibilità mettendole in ordine.
Per usare questa opzione, selezionare Modifica>usi di ordinamento IntelliSense>dalla barra dei menu oppure fare clic con il pulsante destro del mouse nell'editor del codice e scegliere Rimuovi e ordina using.
Implementare l'interfaccia
IntelliSense offre un'opzione che consente di implementare un'interfaccia mentre si lavora nell'editor di codice. Per implementare correttamente un'interfaccia è in genere necessario creare una dichiarazione di metodo per ogni membro dell'interfaccia della classe. Dopo aver digitato il nome di un'interfaccia in una dichiarazione di classe, IntelliSense visualizza una lampadina Azioni rapide. La lampadina offre la possibilità di implementare automaticamente l'interfaccia, usando la denominazione esplicita o implicita. Se si usa la denominazione esplicita, le dichiarazioni dei metodi includono il nome dell'interfaccia. Con la denominazione implicita, le dichiarazioni del metodo non indicano l'interfaccia a cui appartengono. Un metodo di interfaccia con denominazione esplicita è accessibile solo tramite un'istanza di interfaccia e non tramite un'istanza di classe. Per altre informazioni, vedere Implementazione esplicita dell'interfaccia.
Implementa l'interfaccia genera il numero minimo di stub di metodo necessari per soddisfare l'interfaccia. Se una classe di base implementa parti dell'interfaccia, tali stub non verranno rigenerati.
Implementare una classe di base astratta
IntelliSense offre un'opzione che consente di implementare automaticamente i membri di una classe di base astratta mentre si usa l'editor del codice. Per implementare i membri di una classe base astratta è in genere necessario creare una nuova definizione di metodo per ciascun metodo della classe base astratta nella classe derivata. Dopo aver digitato il nome di una classe base astratta in una dichiarazione di classe, IntelliSense visualizza una lampadina Azioni rapide. La lampadina offre la possibilità di implementare automaticamente i metodi della classe di base.
Gli stub di metodo generati con la funzionalità Implementare una classe di base astratta vengono modellati in base al frammento di codice definito nel file MethodStub.snippet. I frammenti di codice sono modificabili. Per altre informazioni, vedere Procedura dettagliata: Creare un frammento di codice in Visual Studio.
Generazione dall'uso
La funzionalità di generazione dall'utilizzo consente di usare le classi e i membri prima di definirli. È possibile generare uno stub per qualsiasi classe, costruttore, metodo, proprietà, campo o enumerazione che si vuole usare ma non sono definiti. È possibile generare nuovi tipi e membri senza abbandonare la posizione corrente nel codice. In questo modo si riduce al minimo l'interruzione del flusso di lavoro.
Sotto ogni identificatore non definito viene visualizzata una linea ondulata rossa. Quando si passa il puntatore del mouse sull'identificatore, viene visualizzato un messaggio di errore in una descrizione comando. Per visualizzare le opzioni appropriate, utilizzare una delle procedure seguenti:
Selezionare l'identificatore non definito. Verrà visualizzata la lampadina di errore di Azioni rapide sotto l'identificatore. Selezionare la lampadina di errore.
Selezionare l'identificatore non definito e quindi premere CTRL+PUNTO (.).
Fare clic con il pulsante destro del mouse sull'identificatore non definito e quindi scegliere Azioni rapide e refactoring.
È possibile visualizzare le opzioni seguenti:
Genera proprietà
Genera campo
Genera metodo
Genera classe
Genera nuovo tipo (per una classe, struct, interfaccia o enumerazione)
Genera gestori eventi
Nell'editor del codice IntelliSense consente di agganciare i metodi (gestori di eventi) a campi evento.
Quando si digita l'operatore +=
dopo un campo evento in un file con estensione cs, IntelliSense chiede di premere TAB. Questa operazione consente di inserire una nuova istanza di un delegato che punta al metodo che gestisce l'evento.
Se si preme tabulazione, IntelliSense completa automaticamente l'istruzione e visualizza il riferimento al gestore eventi come testo selezionato nell'editor di codice. Per completare l'associazione automatica dell'evento, IntelliSense chiede di premere di nuovo TAB per creare uno stub vuoto per il gestore dell'evento.
Se si preme di nuovo tabulazioni, IntelliSense aggiunge uno stub del metodo con la firma corretta e posiziona il cursore nel corpo del gestore eventi.
Se un nuovo delegato creato da IntelliSense fa riferimento a un gestore eventi esistente, IntelliSense comunica queste informazioni nella descrizione comando. È quindi possibile modificare questo riferimento. Il testo è già selezionato nell'editor del codice. In caso contrario, l'associazione automatica degli eventi è stata completata.
Nota
Usare il comando Sposta all'indietro nel menu Visualizza (CTRL+-) per tornare all'istruzione di hookup dell'evento.