Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In Visual Studio, you can use code snippets to add commonly used code to your C# code files. Code snippets can make writing program code quicker, easier, and more reliable.
Expansion code snippets are added at specified insertion points. Surround-with code snippets are added around selected code, and are available for C# and C++ only. For instructions on how to insert or surround code with code snippets, see Code snippets.
Code snippet reference
Code snippets work much the same way in C# and C++, but the set of default code snippets is different. The following C# code snippets are included in Visual Studio by default:
Name or shortcut | Description | Valid insertion locations |
---|---|---|
#if | Creates an #if directive and an #endif directive. | Anywhere. |
#region | Creates a #region directive and an #endregion directive. | Anywhere. |
~ | Creates a finalizer (destructor) for the containing class. | Inside a class. |
attribute | Creates a declaration for a class that derives from Attribute. | Inside a namespace (including the global namespace), a class, or a struct. |
checked | Creates a checked block. | Inside a method, an indexer, a property accessor, or an event accessor. |
class | Creates a class declaration. | Inside a namespace (including the global namespace), a class, or a struct. |
ctor | Creates a constructor for the containing class. | Inside a class. |
cw | Creates a call to WriteLine. | Inside a method, an indexer, a property accessor, or an event accessor. |
do | Creates a do while loop. | Inside a method, an indexer, a property accessor, or an event accessor. |
else | Creates an if-else block. | Inside a method, an indexer, a property accessor, or an event accessor. |
enum | Creates an enum declaration. | Inside a namespace (including the global namespace), a class, or a struct. |
equals | Creates a method declaration that overrides the Equals method defined in the Object class. | Inside a class or a struct. |
exception | Creates a declaration for a class that derives from an exception (Exception by default). | Inside a namespace (including the global namespace), a class, or a struct. |
for | Creates a for loop. | Inside a method, an indexer, a property accessor, or an event accessor. |
foreach | Creates a foreach loop. | Inside a method, an indexer, a property accessor, or an event accessor. |
forr | Creates a for loop that decrements the loop variable after each iteration. | Inside a method, an indexer, a property accessor, or an event accessor. |
if | Creates an if block. | Inside a method, an indexer, a property accessor, or an event accessor. |
indexer | Creates an indexer declaration. | Inside a class or a struct. |
interface | Creates an interface declaration. | Inside a namespace (including the global namespace), a class, or a struct. |
invoke | Creates a block that safely invokes an event. | Inside a method, an indexer, a property accessor, or an event accessor. |
iterator | Creates an iterator. | Inside a class or a struct. |
iterindex | Creates a named iterator and indexer pair by using a nested class. |
Inside a class or a struct. |
lock | Creates a lock block. | Inside a method, an indexer, a property accessor, or an event accessor. |
mbox | Creates a call to System.Windows.Forms.MessageBox.Show. You might have to add a reference to System.Windows.Forms.dll. | Inside a method, an indexer, a property accessor, or an event accessor. |
namespace | Creates a namespace declaration. | Inside a namespace, including the global namespace. |
prop | Creates an autoimplemented property declaration. | Inside a class or a struct. |
propfull | Creates a property declaration with get and set accessors. |
Inside a class or a struct. |
propg | Creates a read-only autoimplemented property with a private set accessor. |
Inside a class or a struct. |
sim | Creates a static int Main method declaration. | Inside a class or a struct. |
struct | Creates a struct declaration. | Inside a namespace (including the global namespace), a class, or a struct. |
svm | Creates a static void Main method declaration. | Inside a class or a struct. |
switch | Creates a switch block. | Inside a method, an indexer, a property accessor, or an event accessor. |
try | Creates a try-catch block. | Inside a method, an indexer, a property accessor, or an event accessor. |
tryf | Creates a try-finally block. | Inside a method, an indexer, a property accessor, or an event accessor. |
unchecked | Creates an unchecked block. | Inside a method, an indexer, a property accessor, or an event accessor. |
unsafe | Creates an unsafe block. | Inside a method, an indexer, a property accessor, or an event accessor. |
using | Creates a using directive. | Inside a namespace, including the global namespace. |
while | Creates a while loop. | Inside a method, an indexer, a property accessor, or an event accessor. |
C# code snippet functions
Functions are specified in the Function element of the code snippet. The following table describes the three functions available to use with the Function
element in C# code snippets.
Function | Description |
---|---|
GenerateSwitchCases(EnumerationLiteral) |
Generates a switch statement and a set of case statements for the members of the enumeration specified by the EnumerationLiteral parameter. The EnumerationLiteral parameter must be a reference either to an enumeration literal or an enumeration type. |
ClassName() |
Returns the name of the class that contains the inserted snippet. |
SimpleTypeName(TypeName) |
Reduces the TypeName parameter to its simplest form in the context in which the snippet was invoked. |
GenerateSwitchCases example
The following example shows how to use the GenerateSwitchCases
function. When you insert this snippet and enter an enumeration into the $switch_on$
literal, the $cases$
literal generates a case
statement for every value in the 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>
ClassName example
The following example shows how to use the ClassName
function. When you insert this snippet, the $classname$
literal is replaced with the name of the enclosing class at that location in the code file.
<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>
SimpleTypeName example
This example shows how to use the SimpleTypeName
function. When you insert this snippet into a code file, the $SystemConsole$
literal is replaced with the simplest form of the Console type in the context in which you invoked the snippet.
<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>