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 . Dowolnym miejscu.
#region Tworzy dyrektywę #region i dyrektywę #endregion . Dowolnym miejscu.
~ 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.
Konstruktor 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ą EqualsObject 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.
Indeksatora 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.
Wniosku 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>