Fragmentos de código de C#
En Visual Studio, puede usar fragmentos de código para agregar código usado habitualmente a los archivos de código de C#. De este modo, los fragmentos de código hacen de la escritura de código de programación un proceso más rápido, sencillo y fiable.
Los fragmentos de código de expansión se agregan en los puntos de inserción especificados. Los fragmentos de código envolventes se agregan alrededor del código seleccionado y solo están disponibles para C# y C++. Para obtener instrucciones sobre cómo insertar o rodear código con fragmentos de código, consulte Fragmentos de código.
Referencia de fragmento de código
Los fragmentos de código funcionan de la misma manera en C# y C++, pero el conjunto de fragmentos de código predeterminados es diferente. Los siguientes fragmentos de código de C# se incluyen en Visual Studio de forma predeterminada:
Nombre o acceso directo | Descripción | Ubicaciones de inserción válidas |
---|---|---|
#if | Crea una directiva #if y una directiva #endif . | En cualquier lugar. |
#region | Crea una directiva #region y una directiva #endregion . | En cualquier lugar. |
~ | Crea un destructor finalizador para la clase contenedora. | Dentro de una clase. |
atributo | Crea una declaración para una clase que se deriva de Attribute. | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
checked | Crea un bloque checked. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
class | Crea una declaración de clase. | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
ctor | Crea un constructor para la clase contenedora. | Dentro de una clase. |
cw | Crea una llamada a WriteLine. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
do | Crea un bucle do while . | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
else | Crea un bloque if-else . | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
enum | Crea una declaración enum. | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
equals | Crea una declaración de método que invalida el método Equals que se define en la clase Object. | Dentro de una clase o un struct. |
excepción | Crea una declaración de una clase que deriva de una excepción (Exception de manera predeterminada). | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
para | Crea un bucle for. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
foreach | Crea un bucle foreach. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
forr | Crea un bucle for que disminuye la variable de bucle después de cada iteración. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
if | Crea un bloque if. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
indexador | Crea una declaración de indexador. | Dentro de una clase o un struct. |
interfaz | Crea una declaración interface. | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
invoke | Crea un bloque que invoca un evento de manera segura. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
iterator | Crea un iterador. | Dentro de una clase o un struct. |
iterindex | Crea un named par iterador e indizador mediante una clase anidada. |
Dentro de una clase o un struct. |
lock | Crea un bloque lock. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
mbox | Crea una llamada a System.Windows.Forms.MessageBox.Show. Es posible que tenga que agregar una referencia a System.Windows.Forms.dll. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
namespace | Crea una declaración namespace. | Dentro de un espacio de nombres, incluido el espacio de nombres global. |
prop | Crea una declaración de propiedad autoimplementada. | Dentro de una clase o un struct. |
propfull | Crea una declaración de propiedad con descriptores de acceso get y set . |
Dentro de una clase o un struct. |
propg | Crea una propiedad autoimplementada de solo lectura con un descriptor de acceso privadoset . |
Dentro de una clase o un struct. |
sim | Crea una declaración de método Main static int. | Dentro de una clase o un struct. |
struct | Crea una declaración struct. | Dentro de un espacio de nombres (incluido el espacio de nombres global), una clase o un struct. |
svm | Crea una declaración de método Main static void. | Dentro de una clase o un struct. |
switch | Crea un bloque switch. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
probar | Crea un bloque try-catch. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
tryf | Crea un bloque try-finally. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
unchecked | Crea un bloque unchecked. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
unsafe | Crea un bloque unsafe. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
using | Crea una directiva using. | Dentro de un espacio de nombres, incluido el espacio de nombres global. |
while | Crea un bucle while. | Dentro de un método, un indexador, un descriptor de acceso a propiedad o un descriptor de acceso a evento. |
Funciones de fragmento de código de C#
Las funciones se especifican en el elemento Function del fragmento de código. En la tabla siguiente se describen las tres funciones disponibles para su uso con el Function
elemento en fragmentos de código de C#.
Función | Descripción |
---|---|
GenerateSwitchCases(EnumerationLiteral) |
Genera una instrucción switch y un conjunto de instrucciones case para los miembros de la enumeración especificada por el parámetro EnumerationLiteral . El EnumerationLiteral parámetro debe ser una referencia a un literal de enumeración o a un tipo de enumeración. |
ClassName() |
Devuelve el nombre de la clase que contiene el fragmento de código insertado. |
SimpleTypeName(TypeName) |
Reduce el TypeName parámetro a su forma más sencilla en el contexto en el que se invocó el fragmento de código. |
Ejemplo de GenerateSwitchCases
En el ejemplo siguiente se muestra cómo usar la función GenerateSwitchCases
. Al insertar este fragmento de código y escribir una enumeración en el $switch_on$
literal, el $cases$
literal genera una case
instrucción para cada valor de la enumeración.
<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>
Ejemplo de ClassName
En el ejemplo siguiente se muestra cómo usar la función ClassName
. Al insertar este fragmento de código, el $classname$
literal se reemplaza por el nombre de la clase envolvente en esa ubicación del archivo 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>
Ejemplo de SimpleTypeName
En este ejemplo se muestra cómo utilizar la función SimpleTypeName
. Al insertar este fragmento de código en un archivo de código, el $SystemConsole$
literal se reemplaza por la forma más sencilla del Console tipo en el contexto en el que invocó el fragmento de código.
<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>