Frammenti di codice C#

In Visual Studio è possibile usare frammenti di codice per aggiungere codice comunemente usato ai file di codice C#. I frammenti di codice possono rendere la scrittura del codice dei programmi più veloce, più semplice e più affidabile.

I frammenti di codice di espansione vengono aggiunti in corrispondenza dei punti di inserimento specificati. I frammenti di codice racchiusi vengono aggiunti intorno al codice selezionato e sono disponibili solo per C# e C++. Per istruzioni su come inserire o racchiudere il codice con frammenti di codice, vedere Frammenti di codice.

Riferimento al frammento di codice

I frammenti di codice funzionano allo stesso modo in C# e C++, ma il set di frammenti di codice predefiniti è diverso. I frammenti di codice C# seguenti sono inclusi in Visual Studio per impostazione predefinita:

Nome o collegamento Descrizione Posizioni di inserimento valide
#if Crea una direttiva #if e una direttiva #endif . Ovunque.
#region Crea una direttiva #region e una direttiva #endregion . Ovunque.
~ Crea un finalizzatore (distruttore) per la classe contenitore. All'interno di una classe.
Attributo Crea una dichiarazione per una classe che deriva da Attribute. All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
checked Crea un blocco checked. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
class Crea una dichiarazione di classe. All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
ctor Crea un costruttore per la classe contenitore. All'interno di una classe.
cw Crea una chiamata a WriteLine. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
do Crea un ciclo dowhile . All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
else Crea un blocco if-else . All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
enum Crea una dichiarazione enum. All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
equals Crea una dichiarazione di metodo che esegue l'override del metodo Equals definito nella classe Object. All'interno di una classe o uno struct.
exception Crea una dichiarazione per una classe che deriva da un'eccezione (Exception per impostazione predefinita). All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
for Crea un ciclo for. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
foreach Crea un ciclo foreach. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
forr Crea un ciclo for che decrementa la variabile di ciclo dopo ogni iterazione. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
if Crea un blocco if. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
Indicizzatore Crea una dichiarazione di indicizzatore. All'interno di una classe o uno struct.
interface Crea una dichiarazione interface. All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
invoke Crea un blocco che richiama in modo sicuro un evento. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
iteratore Crea un iteratore. All'interno di una classe o uno struct.
iterindex Crea un iteratore e una named coppia di indicizzatori usando una classe annidata. All'interno di una classe o uno struct.
lock Crea un blocco lock. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
mbox Crea una chiamata a System.Windows.Forms.MessageBox.Show. Potrebbe essere necessario aggiungere un riferimento a System.Windows.Forms.dll. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
namespace Crea una dichiarazione namespace. All'interno di uno spazio dei nomi, incluso lo spazio dei nomi globale.
prop Crea una dichiarazione di proprietà autoimplementata. All'interno di una classe o uno struct.
propfull Crea una dichiarazione di proprietà con le funzioni di accesso get e set. All'interno di una classe o uno struct.
propg Crea una proprietà di sola lettura implementata automaticamente con una funzione di accesso privata set . All'interno di una classe o uno struct.
sim Crea una dichiarazione staticint del metodo Main. All'interno di una classe o uno struct.
struct Crea una dichiarazione struct. All'interno di uno spazio dei nomi (incluso lo spazio dei nomi globale), una classe o uno struct.
svm Crea una dichiarazione staticvoid del metodo Main. All'interno di una classe o uno struct.
switch Crea un blocco switch. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
try Crea un blocco try-catch. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
tryf Crea un blocco try-finally. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
unchecked Crea un blocco unchecked. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
unsafe Crea un blocco unsafe. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.
using Crea una direttiva using. All'interno di uno spazio dei nomi, incluso lo spazio dei nomi globale.
while Crea un ciclo while. All'interno di un metodo, un indicizzatore, una funzione di accesso proprietà o una funzione di accesso eventi.

Funzioni del frammento di codice C#

Le funzioni sono specificate nell'elemento Function del frammento di codice. La tabella seguente descrive le tre funzioni disponibili per l'uso con l'elemento Function nei frammenti di codice C#.

Funzione Descrizione
GenerateSwitchCases(EnumerationLiteral) Genera un'istruzione switch e un set di istruzioni case per i membri dell'enumerazione specificata dal parametro EnumerationLiteral. Il EnumerationLiteral parametro deve essere un riferimento a un valore letterale di enumerazione o a un tipo di enumerazione.
ClassName() Restituisce il nome della classe che contiene il frammento inserito.
SimpleTypeName(TypeName) Riduce il TypeName parametro alla forma più semplice nel contesto in cui è stato richiamato il frammento.

Esempio GenerateSwitchCases

L'esempio seguente illustra come usare la funzione GenerateSwitchCases. Quando si inserisce questo frammento di codice e si immette un'enumerazione nel $switch_on$ valore letterale, il $cases$ valore letterale genera un'istruzione case per ogni valore nell'enumerazione.

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

Esempio ClassName

L'esempio seguente illustra come usare la funzione ClassName. Quando si inserisce questo frammento di codice, il $classname$ valore letterale viene sostituito con il nome della classe contenitore nel file di codice.

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

Esempio SimpleTypeName

In questo esempio viene illustrato come usare la funzione SimpleTypeName. Quando si inserisce questo frammento di codice in un file di codice, il $SystemConsole$ valore letterale viene sostituito con la forma più semplice del Console tipo nel contesto in cui è stato richiamato il frammento.

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