Condividi tramite


C# IntelliSense

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 da Membri elenco, Completa parola e altro ancora. Offre accesso rapido a:

  • Membri di un tipo o di uno spazio dei nomi

  • Variabili, comandi e nomi di 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 di scelta rapida del frammento. Per altre informazioni sui frammenti di codice disponibili in C# per impostazione predefinita, 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 C#.

Metodi di estensione negli elenchi di completamento

In C# l'elenco di completamento include metodi di estensione inclusi nell'ambito.

I metodi di estensione usano un'icona diversa rispetto ai metodi di istanza. Quando un metodo di istanza e un metodo di estensione con lo stesso nome sono entrambi nell'ambito, l'elenco di completamento visualizza l'icona del metodo di estensione.

Annotazioni

Per String gli oggetti, l'elenco di completamento non visualizza tutti i metodi di estensione.

Elenchi di completamento filtrati

IntelliSense rimuove i membri non necessari dall'elenco di completamento usando filtri. C# filtra gli elenchi di completamento visualizzati per questi elementi:

  • 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 su e giù per passare al successivo overload possibile nell'elenco.

Membri usati 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 dell'elenco membri, i membri usati più di recente vengono visualizzati nella parte superiore. IntelliSense cancella la cronologia dei membri usati più di recente tra ogni sessione di Visual Studio.

sovrascrivere

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 avanzato con intelligenza artificiale

Visual Studio IntelliCode fornisce elenchi di completamento di IntelliSense avanzati dall'intelligenza artificiale. IntelliCode prevede che l'API più probabile sia corretta da usare anziché semplicemente presentare un elenco alfabetico di membri. Usa il contesto e i modelli di codice correnti per fornire l'elenco dinamico.

Generazione automatica del codice

Aggiungere con

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.

Aggiungere direttive using mancanti in 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 Strumenti>Opzioni.
  2. Selezionare Editor >C# (o Visual Basic) >Avanzate nel riquadro sinistro.
  3. In Direttive Using selezionare Aggiungi direttive using mancanti incollare.

Rimuovere e ordinare using

L'opzione Remove and Sort Usings ordina e rimuove e using le extern dichiarazioni 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 Remove and Sort Usings compatta il codice sorgente rimuovendo le direttive inutilizzate using e migliorando la leggibilità ordinandole.

Per usare questa opzione, selezionare Modifica>usi di ordinamento> 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. In genere, per implementare correttamente un'interfaccia, è necessario creare una dichiarazione di metodo per ogni membro dell'interfaccia nella 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. Con la denominazione esplicita, le dichiarazioni del metodo contengono il nome dell'interfaccia. Con la denominazione implicita, le dichiarazioni del metodo non indicano l'interfaccia a cui appartengono. È possibile accedere a un metodo di interfaccia denominato in modo esplicito 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 base implementa parti dell'interfaccia, tali stub non vengono rigenerati.

Implementare la classe base astratta

IntelliSense offre un'opzione che consente di implementare automaticamente i membri di una classe base astratta durante l'uso nell'editor di codice. In genere, per implementare i membri di una classe base astratta è necessario creare una nuova definizione di metodo per ogni 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 consente di implementare automaticamente i metodi della classe di base.

Gli stub del metodo generati dalla funzionalità Implementa classe base astratta vengono modellati dal 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.

Generare dall'utilizzo

La funzionalità Genera dall'utilizzo consente di usare classi e 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 uscire dalla 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. Sotto l'identificatore viene visualizzata una lampadina di errore Azioni rapide . 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

  • Generare un nuovo tipo (per una classe, uno struct, un'interfaccia o un'enumerazione)

Generare gestori eventi

Nell'editor di codice, IntelliSense consente di associare metodi (gestori eventi) ai campi eventi.

Quando si digita l'operatore += dopo un campo evento in un file di .cs , IntelliSense richiede l'opzione per premere TAB . In questo modo viene inserita 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'hook automatico degli eventi, IntelliSense richiede di premere di nuovo tabulazione per creare uno stub vuoto per il gestore eventi.

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 di codice. In caso contrario, l'associazione automatica degli eventi è stata completata.

Annotazioni

Usare il comando Sposta all'indietro nel menu Visualizza (CTRL+-) per tornare all'istruzione di hookup dell'evento.