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 dowhile . 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 staticint. 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 staticvoid. 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>