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 do while . | 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 di metodo int Main statica. | 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 di metodo Main void statica. | 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>