C# IntelliSense

C# IntelliSense est une aide de saisie de code semi-automatique spécifique à une langue. Elle est disponible lorsque vous écrivez du code C# dans l'éditeur de code et le déboguez dans la fenêtre de commande en mode Exécution.

Listes de saisie semi-automatique

Les listes de saisie semi-automatique IntelliSense en C# contiennent des jetons des fonctionnalités Liste des membres, Compléter le mot, etc. Vous bénéficiez d'un accès rapide aux éléments suivants :

  • Membres d’un type ou d’un espace de noms

  • Noms de variables, de commandes et de fonctions

  • Extraits de code

  • Mots clés du langage

  • Méthodes d’extension

La liste de saisie semi-automatique en C# filtre les jetons inappropriés et présélectionne un jeton en fonction du contexte. Pour plus d’informations, consultez Listes de complétion filtrées.

Extraits de code dans les listes de complétion

En C#, la liste de saisie semi-automatique comprend des extraits de code pour vous aider à insérer facilement des entités prédéfinies de code dans votre programme. Dans la liste de saisie semi-automatique, les extraits de code sont affichés sous forme de raccourci d’extrait de code. Pour plus d’informations sur les extraits de code fournis par défaut en C#, consultez Liste d’extraits de code C#.

Mots clés du langage dans les listes de complétion

La liste de saisie semi-automatique inclut des mot clés de langage C# pour vous aider à les insérer dans votre programme. Pour plus d’informations sur les mots clés du langage C#, consultez Mots clés C#.

Méthodes d’extension dans les listes de complétion

En C#, la liste de complétion inclut les méthodes d’extension qui sont dans l’étendue.

Les méthodes d’extension utilisent une icône différente de celle des méthodes d’instance. Quand une méthode d’instance et une méthode d’extension portant le même nom sont toutes deux dans la portée, la liste de saisie semi-automatique affiche l’icône de la méthode d’extension.

Remarque

La liste de saisie semi-automatique n'affiche pas toutes les méthodes d'extension pour les objets String.

Listes de saisie semi-automatique filtrées

IntelliSense supprime les membres inutiles de la liste de saisie semi-automatique à l'aide de filtres. C# filtre les listes de saisie semi-automatique qui apparaissent pour les éléments suivants :

  • Interfaces et classes de base : IntelliSense supprime automatiquement les éléments inutiles dans les listes de saisie semi-automatique des interfaces et des classes de base. Cette suppression concerne les listes d'interfaces et de classes de base de déclaration, et dans les listes de contraintes. Par exemple, les enums n'apparaissent pas dans la liste de saisie semi-automatique pour les classes de base, car les enums ne peuvent pas être utilisés pour les classes de base. La liste de saisie semi-automatique des classes de base contient uniquement des interfaces et des espaces de noms. Si vous sélectionnez un élément dans la liste et que vous tapiez une virgule, IntelliSense supprime les classes de base de la liste de saisie semi-automatique. En effet, le langage C# ne prend pas en charge l'héritage multiple. Le même comportement se produit également pour les clauses de contrainte.

  • Attributs : quand vous appliquez un attribut à un type, la liste de saisie semi-automatique est filtrée afin de répertorier uniquement les types qui descendent des espaces de noms qui contiennent ces types. Par exemple : Attribute.

  • Clauses catch : seules les mot clés try-catch valides apparaissent dans la liste de saisie semi-automatique.

  • Initialiseurs d'objets : seuls les membres qui peuvent être initialisés apparaissent dans la liste de saisie semi-automatique.

  • Mot clé new : lorsque vous saisissez new puis appuyez sur Espace, une liste de complétion apparaît. IntelliSense sélectionne automatiquement un élément dans la liste en fonction du contexte de votre code. Par exemple, IntelliSense sélectionne automatiquement des éléments dans la liste de saisie semi-automatique pour les déclarations et pour les instructions return dans les méthodes.

  • Mot clé enum : lorsque vous appuyez sur la barre d'espace après un signe égal pour l'affectation d'une enum, une liste de complétion apparaît. IntelliSense sélectionne automatiquement un élément dans la liste en fonction du contexte de votre code. Par exemple, IntelliSense sélectionne automatiquement des éléments dans la liste de saisie semi-automatique quand vous tapez le mot clé return et quand vous effectuez une déclaration.

  • Opérateurs as et is : IntelliSense affiche automatiquement un filtre d'une liste de saisie semi-automatique lorsque vous appuyez sur la barre d'espace après avoir tapé le mot clé as ou is.

  • Événements : lorsque vous saisissez le mot clé event, la liste de saisie semi-automatique contient uniquement des types délégués.

  • Aide sur les paramètres : IntelliSense affiche automatiquement la première surcharge de méthode qui correspond aux paramètres que vous entrez. Si plusieurs surcharges de méthode sont disponibles, vous pouvez utilisez les flèches haut et bas pour accéder à la surcharge suivante dans la liste.

Membres utilisés récemment

IntelliSense mémorise les membres que vous avez récemment sélectionnés dans la fenêtre contextuelle Liste des membres pour la saisie semi-automatique du nom d'objet. La prochaine fois que vous utiliserez la liste des membres, les membres utilisés récemment seront affichés en haut. IntelliSense efface l'historique des membres utilisés récemment entre chaque session de Visual Studio.

override

Lorsque vous saisissez override et que vous appuyez sur Espace, IntelliSense affiche dans une zone de liste contextuelle tous les membres valides de la classe de base que vous pouvez remplacer. Si vous tapez le type de retour de la méthode après override, IntelliSense affiche uniquement les méthodes qui retournent le même type. Si IntelliSense ne trouve aucune correspondance, il affiche tous les membres de la classe de base.

IntelliSense amélioré par l’IA

Visual Studio IntelliCode fournit des listes de saisie semi-automatique IntelliSense améliorées par intelligence artificielle. IntelliCode prédit l’API la plus appropriée à utiliser, au lieu de présenter simplement une liste alphabétique des membres. Elle utilise votre contexte de code et vos modèles actuels pour fournir la liste dynamique.

Génération de code automatique

Ajouter using

L'opération IntelliSense Ajouter using IntelliSense ajoute automatiquement les directives using obligatoires à votre fichier de code. Avec cette caractéristique, vous pouvez vous concentrer sur le code que vous écrivez et non sur une autre partie du code.

Pour lancer l'opération Ajouter using, positionnez le curseur sur une référence de type qui ne peut pas être résolue. Par exemple, lorsque vous créez une application console et que vous ajoutez ensuite XmlReader dans le corps de la méthode Main, une ligne de soulignement ondulée rouge s'affiche sous cette ligne de code pour signaler que la référence de type ne peut pas être résolue. Vous pouvez ensuite invoquer l'opération Ajouter using via le menu Actions rapides. L'élément de menu using <espace de noms> est visible uniquement lorsque le curseur est positionné sur la référence non résolue.

Dans cet exemple, pour ajouter automatiquement la directive using à votre code, sélectionnez l'icône d'une ampoule d'erreur, puis choisissez using System.Xml;.

Capture d'écran montrant une opération Ajouter using avec un image d'aperçu.

Ajouter les directives using manquantes au moment du collage

IntelliSense peut ajouter automatiquement des directives using manquantes à votre code lorsque vous collez un type dans votre fichier de code. Cette fonctionnalité vous permet de gagner du temps en automatisant la tâche d’ajout de directives manquantes à l’aide de directives lors du collage d’un type dans un fichier.

Pour activer cette fonctionnalité :

  1. Sélectionnez Outils>Options.
  2. Sélectionnez Éditeur de texte>C# (ou Visual Basic) >Advanced dans le volet gauche.
  3. Sous Directives using, sélectionnez Ajouter les directives using manquantes au moment du collage.

Supprimer et trier les directives using

L’option Supprimer et trier les directives using trie et supprime les déclarations using et extern sans changer le comportement du code source. Au fil du temps, les fichiers sources peuvent devenir trop volumineux et difficiles à lire à cause de directives using inutiles et désorganisées. L’option Supprimer et trier les directives using compacte le code source en supprimant les directives using inutilisées, et elle trie les directives pour améliorer la lisibilité du code.

Pour utiliser cette option, sélectionnez Modifier>IntelliSence>Trier les usings dans la barre des menus, ou cliquez avec le bouton droit dans l'éditeur de code, puis sélectionnez Supprimer et trier les usings.

Implémenter une interface

IntelliSense propose une option pour vous aider à implémenter une interface pendant que vous travaillez dans l'éditeur de code. Normalement, pour implémenter correctement une interface, vous devez créer une déclaration de méthode pour chaque membre de l’interface dans votre classe. Après avoir tapé le nom d'une interface dans une déclaration de classe, IntelliSense affiche une ampoule Actions rapides. Cette fonctionnalité vous permet d’implémenter l’interface automatiquement, à l’aide d’un nommage explicite ou implicite. Avec un nommage explicite, les déclarations de méthode indiquent le nom de l’interface. Avec un nommage implicite, les déclarations de méthode n'indiquent pas l'interface à laquelle elles appartiennent. Une méthode d'interface explicitement nommée est accessible uniquement via une instance d'interface et non via une instance de classe. Pour plus d’informations, consultez Implémentation d’interface explicite.

L'option Implémenter l'interface génère le nombre minimal de stubs de méthode nécessaires à l'interface. Si une classe de base implémente des parties de l’interface, ces stubs ne sont pas regénérés.

Implémenter une classe de base abstraite

IntelliSense fournit une option qui vous aidera à implémenter automatiquement les membres d’une classe de base abstraite pendant que vous travaillez dans l’éditeur de code. Normalement, pour implémenter les membres d'une classe de base abstraite, il est nécessaire de créer une nouvelle définition de méthode pour chaque méthode de la classe de base abstraite dans votre classe dérivée. Après avoir tapé le nom d'une classe de base abstraite dans une déclaration de classe, IntelliSense affiche une ampoule Actions rapides. Cette fonctionnalité vous permet d’implémenter automatiquement les méthodes de la classe de base.

Les stubs de méthode générés par la fonctionnalité Implémenter une classe de base abstraite sont modélisés par l’extrait de code défini dans le fichier MethodStub.snippet. Les extraits de code sont modifiables. Pour plus d'informations, consultez Procédure pas à pas : créer un extrait de code dans Visual Studio.

Générer à partir de l'utilisation

La fonctionnalité Générer à partir de l’utilisation permet d’utiliser des classes et des membres avant de les définir. Vous pouvez générer un stub pour une classe, un constructeur, une méthode, une propriété, un champ ou une énumération quelconque que vous souhaitez utiliser, mais qui ne sont pas définis. Vous pouvez générer de nouveaux types et membres sans quitter votre emplacement actuel dans le code. Cette opération réduit l'interruption de votre flux de travail.

Une ligne de soulignement ondulée rouge s'affiche sous chaque identificateur non défini. Quand vous passez le pointeur de la souris sur l'identifiant, un message d'erreur s'affiche dans une info-bulle. Pour afficher les options appropriées, utilisez l'une des procédures suivantes :

  • Sélectionnez l'identificateur non défini. Une ampoule d’erreur Actions rapides apparaît sous l’identificateur. Sélectionnez l'ampoule d'erreur.

  • Sélectionnez l'identifiant non défini, puis appuyez sur Ctrl+Point (.).

  • Cliquez avec le bouton droit sur l'identifiant non défini, puis sélectionnez Actions rapides et refactorisations.

Les options suivantes peuvent s'afficher :

  • Générer la propriété

  • Générer le champ

  • Générer la méthode

  • Générer la classe

  • Générer un nouveau type (pour une classe, un struct, une interface ou un enum)

Générer des gestionnaires d'événements

Dans l’éditeur de code, IntelliSense peut vous aider à connecter des méthodes (gestionnaires d’événements) à des champs d’événement.

Quand vous tapez l’opérateur += après un champ d’événement dans un fichier .cs, IntelliSense vous invite à appuyer sur la touche Tab. Une nouvelle instance d'un délégué pointant vers la méthode qui gère l'événement est alors insérée.

Capture d'écran montrant une méthode de gestionnaire d'événements de raccordement invité.

Si vous appuyez sur la touche Tab, IntelliSense complète l'instruction automatiquement et affiche la référence du gestionnaire d'événements sous forme de texte sélectionné dans l'éditeur de code. Pour terminer la connexion d’événements automatique, IntelliSense vous invite à appuyer de nouveau sur la touche Tab afin de créer un stub vide pour le gestionnaire d’événements.

Capture d'écran montrant une méthode de gestionnaire d'événements générée.

Si vous appuyez à nouveau sur la touche Tab, IntelliSense ajoute une méthode stub avec la signature appropriée et place le curseur dans le corps de votre gestionnaire d'événements.

Si un nouveau délégué créé par IntelliSense fait référence à un gestionnaire d'événements existant, IntelliSense communique cette information dans l'info-bulle. Vous pouvez ensuite modifier cette référence ; le texte est déjà sélectionné dans l’éditeur de code. Sinon, la connexion d'événements automatique se termine.

Remarque

Utilisez la commande Naviguer vers l'arrière du menu Affichage (Ctrl+-) pour revenir à l'instruction de connexion d'événements.