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 o is .

  • 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;.

Screenshot che mostra un'operazione Add using con un'immagine di anteprima.

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à:

  1. Selezionare Opzioni strumenti>.
  2. Selezionare Editor>di testo C# (o Visual Basic) >Avanzate nel riquadro sinistro.
  3. 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.

Screenshot che mostra un metodo del gestore eventi di associazione richiesto.

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.

Screenshot che mostra un metodo del gestore eventi generato.

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.