Snippets de código C#
No Visual Studio, você pode usar snippets de código para adicionar código comumente usado aos seus arquivos de código C#. Os snippets de código podem fazer com que escrever código de programa seja mais rápido, mais fácil e mais confiável.
Os snippets de código de expansão são adicionados em pontos de inserção especificados. Os snippets de código surround with são adicionados ao código selecionado e estão disponíveis somente para C# e C++. Para obter instruções sobre como inserir ou colocar código entre snippets de código, consulte Snippets de código.
Referência de snippet de código
Os snippets de código funcionam da mesma maneira em C# e C++, mas o conjunto de snippets de código padrão é diferente. Os seguintes trechos de código C# são incluídos no Visual Studio por padrão:
Nome ou atalho | Descrição | Locais de inserção válidos |
---|---|---|
#if | Cria uma diretiva #if e uma diretiva #endif . | Em qualquer lugar. |
#region | Cria uma diretiva #region e uma diretiva #endregion . | Em qualquer lugar. |
~ | Cria um finalizador (destruidor) para a classe que o contém. | Dentro de uma classe. |
Atributo | Cria uma declaração para uma classe que deriva de Attribute. | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
verificado | Cria um bloco checked. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
classe | Cria uma declaração de classe. | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
ctor | Cria um construtor para a classe que o contém. | Dentro de uma classe. |
cw | Cria uma chamada para WriteLine. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
do | Cria um loop do while . | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
else | Cria um bloco if-else . | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
enum | Cria uma declaração enum. | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
equals | Cria uma declaração de método que substitui o método Equals definido na classe Object. | Dentro de uma classe ou um struct. |
exception | Cria uma declaração para uma classe que deriva de uma exceção (Exception por padrão). | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
para | Cria um loop for. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
foreach | Cria um loop foreach. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
forr | Cria um loop for que decrementa a variável de loop depois de cada iteração. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
if | Cria um bloco if. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
indexador | Cria uma declaração do indexador. | Dentro de uma classe ou um struct. |
interface | Cria uma declaração interface. | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
invoke | Cria um bloco que invoca um evento com segurança. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
iterator | Cria um iterador. | Dentro de uma classe ou um struct. |
iterindex | Cria um par de named iterador e indexador usando uma classe aninhada. |
Dentro de uma classe ou um struct. |
lock | Cria um bloco lock. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
mbox | Cria uma chamada para System.Windows.Forms.MessageBox.Show. Talvez seja necessário adicionar uma referência a System.Windows.Forms.dll. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
namespace | Cria uma declaração de namespace. | Dentro de um namespace, incluindo o namespace global. |
prop | Cria uma declaração de propriedade implementada automaticamente. | Dentro de uma classe ou um struct. |
propfull | Cria uma declaração de propriedade com os acessadores get e set . |
Dentro de uma classe ou um struct. |
propg | Cria uma propriedade autoimplementada somente leitura com um acessador privadoset . |
Dentro de uma classe ou um struct. |
sim | Cria uma declaração estática do método int Main. | Dentro de uma classe ou um struct. |
struct | Cria uma declaração struct. | Dentro de um namespace (incluindo o namespace global), uma classe ou uma estrutura. |
svm | Cria uma declaração de método Main void estática. | Dentro de uma classe ou um struct. |
switch | Cria um bloco switch. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
experimentar | Cria um bloco try-catch. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
tryf | Cria um bloco try-finally. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
unchecked | Cria um bloco unchecked. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
unsafe | Cria um bloco unsafe. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
using | Cria uma diretiva using. | Dentro de um namespace, incluindo o namespace global. |
while | Cria um loop while. | Dentro de um método, um indexador, um acessador de propriedade ou um acessador de evento. |
Funções de snippet de código C#
As funções são especificadas no elemento Function do snippet de código. A tabela a seguir descreve as três funções disponíveis para uso com o Function
elemento em snippets de código C#.
Função | Descrição |
---|---|
GenerateSwitchCases(EnumerationLiteral) |
Gera uma instrução de opção e um conjunto de instruções de maiúsculas e minúsculas para os membros da enumeração especificada pelo parâmetro EnumerationLiteral . O EnumerationLiteral parâmetro deve ser uma referência a um literal de enumeração ou a um tipo de enumeração. |
ClassName() |
Retorna o nome da classe que contém o snippet inserido. |
SimpleTypeName(TypeName) |
Reduz o TypeName parâmetro à sua forma mais simples no contexto em que o snippet foi invocado. |
Exemplo de GenerateSwitchCases
O exemplo a seguir mostra como usar a função GenerateSwitchCases
. Quando você insere esse snippet e insere uma enumeração no $switch_on$
literal, o $cases$
literal gera uma case
instrução para cada valor na enumeração.
<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>
Exemplo de ClassName
O exemplo a seguir mostra como usar a função ClassName
. Quando você insere esse snippet, o $classname$
literal é substituído pelo nome da classe delimitadora nesse local no arquivo de código.
<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>
Exemplo de SimpleTypeName
Este exemplo mostra como usar a função SimpleTypeName
. Quando você insere esse trecho em um arquivo de código, o $SystemConsole$
literal é substituído pela forma mais simples do Console tipo no contexto em que você invocou o trecho.
<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>