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 static int. | 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 static void. | 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>