C# code snippets
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Code snippets are ready-made snippets of code you can quickly insert into your code. For example, the for
code snippet creates an empty for
loop. Some code snippets are surround-with code snippets, which enable you to select lines of code, and then choose a code snippet which incorporates the selected lines of code. For example, when you select lines of code and then activate the for
code snippet, it creates a for
loop with those lines of code inside the loop block. Code snippets can make writing program code quicker, easier, and more reliable.
You can insert a code snippet at the cursor location, or insert a surround-with code snippet around the currently selected code. The Code Snippet Inserter is invoked through the Insert Code Snippet or Surround With commands on the IntelliSense menu, or by using the keyboard shortcuts Ctrl+K,X or Ctrl+K,S respectively.
The Code Snippet Inserter displays the code snippet name for all available code snippets. The Code Snippet Inserter also includes an input dialog box where you can type the name of the code snippet, or part of the code snippet name. The Code Snippet Inserter highlights the closest match to a code snippet name. Pressing Tab at any time will dismiss the Code Snippet Inserter and insert the currently selected code snippet. Pressing Esc or clicking the mouse in the code editor will dismiss the Code Snippet Inserter without inserting a code snippet.
Default code snippets
By default the following code snippets are included in Visual Studio for C#.
Name (or shortcut) | Description | Valid locations to insert snippet |
---|---|---|
#if | Creates a #if directive and a #endif directive. | Anywhere. |
#region | Creates a #region directive and a #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 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 may 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 auto-implemented 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 auto-implemented 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. |