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 | do while ループを作成します。 | メソッド、インデクサー、プロパティ アクセサー、またはイベント アクセサーの内部。 |
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 | autoimplemented プロパティ宣言を作成します。 | クラスまたは構造体の内部。 |
propfull | get および set アクセサーを持つプロパティの宣言を作成します。 |
クラスまたは構造体の内部。 |
propg | プライベート set アクセサーを使用して読み取り専用自動実装プロパティを作成します。 |
クラスまたは構造体の内部。 |
sim | static int の Main メソッドの宣言を作成します。 | クラスまたは構造体の内部。 |
struct | struct 宣言を作成します。 | 名前空間 (グローバル名前空間を含む)、クラス、または構造体の内部。 |
svm | static void の 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>