Fragmenty kodu w języku C#
W programie Visual Studio możesz użyć fragmentów kodu, aby dodać często używany kod do plików kodu języka C#. Fragmenty kodu mogą przyspieszyć, łatwiej i bardziej niezawodnie pisać kod programu.
Fragmenty kodu rozszerzenia są dodawane w określonych punktach wstawiania. Fragmenty kodu otoczone są dodawane wokół wybranego kodu i są dostępne tylko dla języków C# i C++. Aby uzyskać instrukcje dotyczące wstawiania lub otaczania kodu fragmentami kodu, zobacz Fragmenty kodu.
Dokumentacja fragmentu kodu
Fragmenty kodu działają podobnie w językach C# i C++, ale zestaw domyślnych fragmentów kodu jest inny. Następujące fragmenty kodu w języku C# są domyślnie uwzględniane w programie Visual Studio:
Nazwa lub skrót | opis | Prawidłowe lokalizacje wstawiania |
---|---|---|
#if | Tworzy dyrektywę #if i dyrektywę #endif . | Gdziekolwiek. |
#region | Tworzy dyrektywę #region i dyrektywę #endregion . | Gdziekolwiek. |
~ | Tworzy finalizator (destruktor) dla zawierającej klasy. | Wewnątrz klasy. |
attribute | Tworzy deklarację klasy, która pochodzi z klasy Attribute. | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
checked | Tworzy zaznaczony blok. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
class | Tworzy deklarację klasy. | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
ctor | Tworzy konstruktor dla zawierającej klasy. | Wewnątrz klasy. |
Cw | Tworzy wywołanie metody WriteLine. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
do | Tworzy pętlę czasową do wykonania. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
else | Tworzy blok if-else. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
wyliczenie | Tworzy deklarację wyliczenia . | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
equals | Tworzy deklarację metody, która zastępuje metodę zdefiniowaną Equals Object w klasie. | Wewnątrz klasy lub struktury. |
wyjątek | Tworzy deklarację dla klasy, która pochodzi z wyjątku (Exception domyślnie). | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
dla | Tworzy pętlę for . | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
foreach | Tworzy pętlę foreach . | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
forr | Tworzy pętlę for , która dekrementuje zmienną pętli po każdej iteracji. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
jeżeli | Tworzy blok if . | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
indeksator | Tworzy deklarację indeksatora. | Wewnątrz klasy lub struktury. |
interfejs | Tworzy deklarację interfejsu. | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
wywołać | Tworzy blok, który bezpiecznie wywołuje zdarzenie. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
iterator | Tworzy iterator. | Wewnątrz klasy lub struktury. |
iterindex | Tworzy parę iteratora named i indeksatora przy użyciu klasy zagnieżdżonej. |
Wewnątrz klasy lub struktury. |
lock | Tworzy blok blokady. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
mbox | Tworzy wywołanie metody System.Windows.Forms.MessageBox.Show. Może być konieczne dodanie odwołania do System.Windows.Forms.dll. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
namespace | Tworzy deklarację przestrzeni nazw . | Wewnątrz przestrzeni nazw, w tym globalnej przestrzeni nazw. |
rekwizyt | Tworzy automatycznie zaimplementowaną deklarację właściwości . | Wewnątrz klasy lub struktury. |
propfull | Tworzy deklarację właściwości z metodami get i set metodami dostępu. |
Wewnątrz klasy lub struktury. |
propg | Tworzy automatycznie zaimplementowaną właściwość tylko do odczytu z dostępem prywatnymset . |
Wewnątrz klasy lub struktury. |
Sim | Tworzy statyczną deklarację metody main int. | Wewnątrz klasy lub struktury. |
struktura | Tworzy deklarację struktury . | Wewnątrz przestrzeni nazw (w tym globalnej przestrzeni nazw), klasy lub struktury. |
svm | Tworzy statyczną deklarację metody main void. | Wewnątrz klasy lub struktury. |
switch | Tworzy blok przełącznika. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
try | Tworzy blok try-catch. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
tryf | Tworzy blok try-finally. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
unchecked | Tworzy niezaznakowany blok. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
unsafe | Tworzy niebezpieczny blok. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
using | Tworzy dyrektywę using . | Wewnątrz przestrzeni nazw, w tym globalnej przestrzeni nazw. |
while | Tworzy pętlę czasową. | Wewnątrz metody indeksator, metody dostępu do właściwości lub metody dostępu zdarzenia. |
Funkcje fragmentu kodu w języku C#
Funkcje są określane w elememencie Function fragmentu kodu. W poniższej tabeli opisano trzy funkcje dostępne do użycia z elementem Function
w fragmentach kodu języka C#.
Function | opis |
---|---|
GenerateSwitchCases(EnumerationLiteral) |
Generuje instrukcję switch i zestaw instrukcji wielkości liter dla elementów członkowskich wyliczenia określonego EnumerationLiteral przez parametr . Parametr EnumerationLiteral musi być odwołaniem do literału wyliczenia lub typu wyliczenia. |
ClassName() |
Zwraca nazwę klasy zawierającej wstawiony fragment kodu. |
SimpleTypeName(TypeName) |
TypeName Zmniejsza parametr do najprostszej postaci w kontekście, w którym został wywołany fragment kodu. |
Przykład generateSwitchCases
W poniższym przykładzie pokazano, jak używać GenerateSwitchCases
funkcji. Po wstawieniu tego fragmentu kodu i wprowadzeniu wyliczenia do $switch_on$
literału $cases$
literał literał generuje instrukcję case
dla każdej wartości w wyliczenia.
<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>
Przykład ClassName
W poniższym przykładzie pokazano, jak używać ClassName
funkcji. Po wstawieniu tego fragmentu kodu $classname$
literał jest zastępowany nazwą otaczającej klasy w tej lokalizacji w pliku kodu.
<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>
Przykład simpleTypeName
W tym przykładzie SimpleTypeName
pokazano, jak używać funkcji. Po wstawieniu tego fragmentu kodu do pliku $SystemConsole$
kodu literał jest zastępowany najprostszą formą Console typu w kontekście, w którym wywołano fragment kodu.
<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>