C#-Codeausschnitte

In Visual Studio können Sie Codeausschnitte verwenden, um häufig verwendeten Code zu Ihren C#-Codedateien hinzuzufügen. Durch Codeausschnitte kann das Erstellen von Programmcode schneller, einfacher und zuverlässiger werden.

Erweiterungscodeausschnitte werden an angegebenen Einfügepunkten hinzugefügt. Surround-With-Codeausschnitte werden um den ausgewählten Code herum hinzugefügt und sind nur für C# und C++ verfügbar. Anweisungen zum Einfügen oder Umgeben von Codeausschnitten finden Sie unter Codeausschnitte.

Codeausschnittreferenz

Codeausschnitte funktionieren in C# und C++ ähnlich, aber die Standardcodeausschnitte unterscheiden sich. Die folgenden C#-Codeausschnitte sind standardmäßig in Visual Studio enthalten:

Name oder Verknüpfung Beschreibung Gültige Einfügepositionen
#if Erstellt eine #if-Direktive und eine #endif-Direktive. Beliebig.
#region Erstellt eine #region-Direktive und eine #endregion-Direktive. Beliebig.
~ Erstellt einen Finalizer (Destruktor) für die enthaltende Klasse. Innerhalb einer Klasse.
Attribut Erstellt eine Deklaration für eine Attribute abgeleitete Klasse. In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
checked Erstellt einen checked-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
class Erstellt eine Klassendeklaration. In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
ctor Erstellt einen Konstruktor für die enthaltende Klasse. Innerhalb einer Klasse.
cw Erstellt einen Aufruf an WriteLine. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
do Erstellt eine Do-While-Schleife. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
else Erstellt einen If-Else-Block . In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
enum Erstellt eine enum-Deklaration. In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
equals Erstellt eine Methodendeklaration, die die in der Object-Klasse definierte Equals-Methode außer Kraft setzt. Innerhalb einer Klasse oder Struktur.
exception Erstellt eine Deklaration für eine Klasse, die von einer Ausnahme abgeleitet wird (standardmäßig Exception). In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
für Erstellt eine for-Schleife. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
foreach Erstellt eine foreach-Schleife. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
forr Erstellt eine for-Schleife, deren Schleifenvariable nach jeder Iteration verringert wird. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
if Erstellt einen if-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
Indexer Erstellt eine Indexerdeklaration. Innerhalb einer Klasse oder Struktur.
interface Erstellt eine interface-Deklaration. In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
invoke Erstellt einen Block, durch den ein Ereignis sicher aufgerufen wird. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
Iterator Erstellt einen Iterator. Innerhalb einer Klasse oder Struktur.
iterindex Erstellt ein named Iterator- und Indexerpaar mithilfe einer geschachtelten Klasse. Innerhalb einer Klasse oder Struktur.
Sperre Erstellt einen lock-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
mbox Erstellt einen Aufruf an System.Windows.Forms.MessageBox.Show. Möglicherweise müssen Sie einen Verweis auf System.Windows.Forms.dll hinzufügen. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
namespace Erstellt eine namespace-Deklaration. Innerhalb eines Namespaces, einschließlich des globalen Namespaces.
prop Erstellt eine autoimplementierte Eigenschaftsdeklaration . Innerhalb einer Klasse oder Struktur.
propfull Erstellt eine Eigenschaftendeklaration mit get-Accessor und set-Accessor. Innerhalb einer Klasse oder Struktur.
propg Erstellt eine schreibgeschützte autoimplementierte Eigenschaft mit einem privaten set Accessor. Innerhalb einer Klasse oder Struktur.
sim Erstellt eine Deklaration der Main-Methode mit staticint. Innerhalb einer Klasse oder Struktur.
struct Erstellt eine struct-Deklaration. In einem Namespace (einschließlich des globalen Namespaces), einer Klasse oder einer Struktur.
svm Erstellt eine Deklaration der Main-Methode mit staticvoid. Innerhalb einer Klasse oder Struktur.
switch Erstellt einen switch-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
Versuch Erstellt einen try-catch-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
tryf Erstellt einen try-finally-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
unchecked Erstellt einen unchecked-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
unsafe Erstellt einen unsafe-Block. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.
using Erstellt eine using-Direktive. Innerhalb eines Namespaces, einschließlich des globalen Namespaces.
while Erstellt eine while-Schleife. In einer Methode, einem Indexer, einem Eigenschaftenaccessor oder einem Ereignisaccessor.

C#-Codeausschnittfunktionen

Funktionen werden im Element Function (Funktion) des Codeausschnitts angegeben. In der folgenden Tabelle sind die drei Funktionen beschrieben, die mit dem Function Element in C#-Codeausschnitten verwendet werden können.

Funktion Beschreibung
GenerateSwitchCases(EnumerationLiteral) Es werden eine switch-Anweisung sowie mehrere case-Anweisungen für die vom EnumerationLiteral-Parameter angegebenen Member der Enumeration generiert. Der EnumerationLiteral Parameter muss ein Verweis auf ein Enumerationsliteral oder einen Enumerationstyp sein.
ClassName() Gibt den Namen der Klasse zurück, die den eingefügten Ausschnitt enthält.
SimpleTypeName(TypeName) Reduziert den TypeName Parameter auf seine einfachste Form im Kontext, in dem der Codeausschnitt aufgerufen wurde.

Beispiel für GenerateSwitchCases

Das folgende Beispiel zeigt die Verwendung der Funktion GenerateSwitchCases. Wenn Sie diesen Codeausschnitt einfügen und eine Enumeration in das $switch_on$ Literal eingeben, generiert das $cases$ Literal eine case Anweisung für jeden Wert in der Enumeration.

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

Beispiel für ClassName

Das folgende Beispiel zeigt die Verwendung der Funktion ClassName. Wenn Sie diesen Codeausschnitt einfügen, wird das $classname$ Literal durch den Namen der eingeschlossenen Klasse an dieser Stelle in der Codedatei ersetzt.

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

Beispiel für SimpleTypeName

In diesem Beispiel wird die Verwendung der SimpleTypeName-Funktion veranschaulicht. Wenn Sie diesen Codeausschnitt in eine Codedatei einfügen, wird das $SystemConsole$ Literal durch die einfachste Form des Console Typs im Kontext ersetzt, in dem Sie den Codeausschnitt aufgerufen haben.

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