C# コード スニペット

Visual Studio では、コード スニペットを使用して、よく使用されるコードを C# コード ファイルに追加できます。 コード スニペットを使うと、速く、容易に、信頼性の高いプログラム コードを作成できます。

拡張 コード スニペットは、指定した挿入ポイントに追加されます。 Surround-with コード スニペットは、選択したコードの周囲に追加され、C# と C++ でのみ使用できます。 コード スニペットを使用してコードを挿入または囲む方法については、「コード スニペット」を参照してください

コード スニペット リファレンス

コード スニペットは C# と C++ でほとんど同じように機能しますが、既定のコード スニペットのセットは異なります。 既定では、次の C# コード スニペットが Visual Studio に含まれています。

名前またはショートカット 説明 有効な挿入場所
#if #if ディレクティブと #endif ディレクティブを作成します。 任意の場所。
#region #region ディレクティブと #endregion ディレクティブを作成します。 任意の場所。
~ 外側のクラスのファイナライザー (デストラクター) を作成します。 クラスの内部。
属性 (attribute) Attribute から派生するクラスの宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
checked checked ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
class クラスの宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
ctor 外側のクラスのコンストラクターを作成します。 クラスの内部。
cw WriteLine への呼び出しを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
do dowhile ループを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
else if-else ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
enum enum 宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
equals Object クラスに定義された Equals メソッドをオーバーライドするメソッド宣言を作成します。 クラスまたは構造体の内部。
exception exception (既定では Exception) から派生するクラスの宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
対象 for ループを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
foreach foreach ループを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
forr 各イテレーションの後でループ変数をデクリメントする for ループを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
if if ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
インデクサー インデクサーの宣言を作成します。 クラスまたは構造体の内部。
interface interface 宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
invoke イベントを安全に呼び出すブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
iterator 反復子を作成します。 クラスまたは構造体の内部。
iterindex 入れ子になったクラスを named 使用して、反復子とインデクサーのペアを作成します。 クラスまたは構造体の内部。
ロック (lock) lock ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
mbox System.Windows.Forms.MessageBox.Show への呼び出しを作成します。 System.Windows.Forms.dllへの参照を追加する必要がある場合があります。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
namespace namespace 宣言を作成します。 グローバル名前空間を含む名前空間内。
prop 自動実装プロパティ宣言を 作成します クラスまたは構造体の内部。
propfull get および set アクセサーを持つプロパティの宣言を作成します。 クラスまたは構造体の内部。
propg プライベート set アクセサーを使用して、読み取り専用の自動実装プロパティを作成します。 クラスまたは構造体の内部。
sim staticint の Main メソッドの宣言を作成します。 クラスまたは構造体の内部。
struct struct 宣言を作成します。 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。
svm staticvoid の Main メソッドの宣言を作成します。 クラスまたは構造体の内部。
switch switch ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
試す try-catch ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
tryf try-finally ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
unchecked unchecked ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
unsafe unsafe ブロックを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。
using using ディレクティブを作成します。 グローバル名前空間を含む名前空間内。
while while ループを作成します。 メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。

C# コード スニペット関数

関数は、コード スニペットの Function 要素で指定されています。 次の表では、C# コード スニペットの要素で Function 使用できる 3 つの関数について説明します。

関数 説明
GenerateSwitchCases(EnumerationLiteral) EnumerationLiteral パラメーターで指定された列挙体のメンバー用に、switch ステートメントおよび一連の case ステートメントを生成します。 パラメーターは EnumerationLiteral 、列挙型リテラルまたは列挙型への参照である必要があります。
ClassName() 挿入されたスニペットを含むクラスの名前を返します。
SimpleTypeName(TypeName) スニペットが TypeName 呼び出されたコンテキストでパラメーターを最も単純な形式に減らします。

GenerateSwitchCases の例

次の例は、GenerateSwitchCases 関数の使用法を示しています。 このスニペットを挿入し、リテラルに列挙型を $switch_on$ 入力すると、リテラルは $cases$ 列挙体のすべての値に対してステートメントを生成 case します。

<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 の例

次の例は、ClassName 関数の使用法を示しています。 このスニペットを挿入すると、 $classname$ リテラルはコード ファイル内のその場所にある外側のクラスの名前に置き換えられます。

<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 の例

この例では、SimpleTypeName 関数の使用方法を示します。 このスニペットをコード ファイルに挿入すると、リテラルは、 $SystemConsole$ スニペットを呼び出したコンテキストで最も単純な形式の Console 型に置き換えられます。

<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>