Extraits de code C#

Dans Visual Studio, vous pouvez utiliser des extraits de code pour ajouter du code couramment utilisé à vos fichiers de code C#. Les extraits de code peuvent accélérer, simplifier et fiabiliser l’écriture de code de programme.

Les extraits de code d’expansion sont ajoutés aux points d’insertion spécifiés. Les extraits de code surround-with sont ajoutés autour du code sélectionné et sont disponibles uniquement pour C# et C++. Pour obtenir des instructions sur l’insertion ou l’entourer de code avec des extraits de code, consultez extraits de code.

Informations de référence sur l’extrait de code

Les extraits de code fonctionnent de la même façon en C# et C++, mais l’ensemble d’extraits de code par défaut est différent. Les extraits de code C# suivants sont inclus dans Visual Studio par défaut :

Nom ou raccourci Description Emplacements d’insertion valides
#if Crée une directive #if et une directive #endif . N’importe où.
#region Crée une directive #region et une directive #endregion . N’importe où.
~ Crée un finaliseur (destructeur) pour la classe conteneur. Dans une classe.
attribut Crée une déclaration pour une classe qui dérive de Attribute. Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
checked Crée un bloc checked. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
class Crée une déclaration de classe. Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
ctor Crée un constructeur pour la classe conteneur. Dans une classe.
cw Crée un appel à WriteLine. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
do Crée une boucle dowhile . Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
else Crée un bloc if-else . Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
enum Crée une déclaration enum. Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
equals Crée une déclaration de méthode qui substitue la méthode Equals définie dans la classe Object. Dans une classe ou un struct.
exception Crée une déclaration pour une classe qui dérive d’une exception (Exception par défaut). Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
pour Crée une boucle for. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
foreach Crée une boucle foreach. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
forr Crée une boucle for qui décrémente la variable de boucle après chaque itération. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
if Crée un bloc if. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
indexeur Crée une déclaration d’indexeur. Dans une classe ou un struct.
interface Crée une déclaration interface. Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
invoke Crée un bloc qui appelle un événement en toute sécurité. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
iterator Crée un itérateur. Dans une classe ou un struct.
iterindex Crée une named paire itérateur et indexeur à l’aide d’une classe imbriquée. Dans une classe ou un struct.
lock Crée un bloc lock. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
mbox Crée un appel à System.Windows.Forms.MessageBox.Show. Vous devrez peut-être ajouter une référence à System.Windows.Forms.dll. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
espace de noms Crée une déclaration namespace. À l’intérieur d’un espace de noms, y compris l’espace de noms global.
prop Crée une déclaration de propriété implémentée automatiquement. Dans une classe ou un struct.
propfull Crée une déclaration de propriété avec des accesseurs get et set. Dans une classe ou un struct.
propg Crée une propriété auto-implémentée en lecture seule avec un accesseur privéset. Dans une classe ou un struct.
sim Crée une déclaration de méthode Main staticint. Dans une classe ou un struct.
struct Crée une déclaration struct. Dans un espace de noms (notamment l’espace de noms global), une classe ou un struct.
svm Crée une déclaration de méthode Main staticvoid. Dans une classe ou un struct.
switch Crée un bloc switch. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
Essayer Crée un bloc try-catch. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
tryf Crée un bloc try-finally. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
unchecked Crée un bloc unchecked. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
unsafe Crée un bloc unsafe. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.
using Crée une directive using. À l’intérieur d’un espace de noms, y compris l’espace de noms global.
while Crée une boucle while. Dans une méthode, un indexeur, un accesseur de propriété ou un accesseur d’événement.

Fonctions d’extrait de code C#

Les fonctions sont spécifiées dans l’élément Function de l’extrait de code. Le tableau suivant décrit les trois fonctions à utiliser avec l’élément Function dans les extraits de code C#.

Fonction Description
GenerateSwitchCases(EnumerationLiteral) Génère une instruction switch et un ensemble d’instructions case pour les membres de l’énumération spécifiée par le paramètre EnumerationLiteral. Le EnumerationLiteral paramètre doit être une référence à un littéral d’énumération ou à un type d’énumération.
ClassName() Retourne le nom de la classe qui contient l’extrait de code inséré.
SimpleTypeName(TypeName) Réduit le TypeName paramètre à sa forme la plus simple dans le contexte dans lequel l’extrait de code a été appelé.

Exemple de GenerateSwitchCases

L’exemple suivant explique comment utiliser la fonction GenerateSwitchCases. Lorsque vous insérez cet extrait de code et entrez une énumération dans le $switch_on$ littéral, le $cases$ littéral génère une case instruction pour chaque valeur de l’énumération.

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>switch</Title>
            <Shortcut>switch</Shortcut>
            <Description>Code snippet for switch statement</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>expression</ID>
                    <ToolTip>Expression to switch on</ToolTip>
                    <Default>switch_on</Default>
                </Literal>
                <Literal Editable="false">
                    <ID>cases</ID>
                    <Function>GenerateSwitchCases($expression$)</Function>
                    <Default>default:</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp">
                <![CDATA[
                    switch ($expression$)
                    {
                        $cases$
                    }
                ]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Exemple de ClassName

L’exemple suivant explique comment utiliser la fonction ClassName. Lorsque vous insérez cet extrait de code, le $classname$ littéral est remplacé par le nom de la classe englobante à cet emplacement dans le fichier de code.

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Common constructor pattern</Title>
            <Shortcut>ctor</Shortcut>
            <Description>Code Snippet for a constructor</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <Default>int</Default>
                </Literal>
                <Literal>
                    <ID>name</ID>
                    <Default>field</Default>
                </Literal>
                <Literal default="true" Editable="false">
                    <ID>classname</ID>
                    <ToolTip>Class name</ToolTip>
                    <Function>ClassName()</Function>
                    <Default>ClassNamePlaceholder</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp" Format="CData">
                <![CDATA[
                    public $classname$ ($type$ $name$)
                    {
                        this._$name$ = $name$;
                    }
                    private $type$ _$name$;
                ]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Exemple de SimpleTypeName

Cet exemple montre comment utiliser la fonction SimpleTypeName. Lorsque vous insérez cet extrait de code dans un fichier de code, le $SystemConsole$ littéral est remplacé par la forme la Console plus simple du type dans le contexte dans lequel vous avez appelé l’extrait de code.

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Console_WriteLine</Title>
            <Shortcut>cw</Shortcut>
            <Description>Code snippet for Console.WriteLine</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="false">
                    <ID>SystemConsole</ID>
                    <Function>SimpleTypeName(global::System.Console)</Function>
                </Literal>
            </Declarations>
            <Code Language="csharp">
                <![CDATA[
                    $SystemConsole$.WriteLine();
                ]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>