在 Visual Studio 中,您可以使用代碼段將常用的程式代碼新增至 C# 程式代碼檔案。 程式碼片段可以更快速、更輕鬆且更可靠地撰寫程式碼。
擴充 代碼段會在指定的插入點新增。 環繞式 代碼段會在選取的程式代碼周圍新增,而且僅適用於C# 和C++。 如需如何使用代碼段插入或包圍程式代碼的指示,請參閱 代碼段。
代碼段參考
代碼段在 C# 和 C++ 中的運作方式大致相同,但預設代碼段集不同。 根據預設,Visual Studio 會包含下列 C# 代碼段:
| 名稱或快捷方式 | 描述 | 有效的插入位置 |
|---|---|---|
| #if | 建立 #if 指示詞和 #endif 指示詞。 | 任何位置。 |
| #region | 建立 #region 指示詞和 #endregion 指示詞。 | 任何位置。 |
| ~ | 建立包含類別的完成項 (解構函式)。 | 在類別內部。 |
| 屬性 | 建立衍生自 Attribute 之類別的宣告。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| 已選取 | 建立 checked 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| class | 建立類別宣告。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| ctor | 建立包含類別的建構函式。 | 在類別內部。 |
| cw | 建立 WriteLine 呼叫。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| do | 建立 while 循環的 do。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| else | 建立 if-else 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| 列舉 | 建立 enum 宣告。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| 等於 | 建立覆寫 Object 類別中所定義 Equals 方法的方法宣告。 | 在類別或結構內部。 |
| exception | 建立衍生自例外狀況之類別的宣告 (預設為 Exception)。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| 的 | 建立 for 迴圈。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| foreach | 建立 foreach 迴圈。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| forr | 建立在每個重複項目後遞減迴圈變數的 for 迴圈。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| if | 建立 if 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| Indexer - 索引子 | 建立索引子宣告。 | 在類別或結構內部。 |
| interface | 建立 interface 宣告。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| invoke | 建立安全地叫用事件的區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| 迭代器 | 建立迭代器。 | 在類別或結構內部。 |
| iterindex | named使用巢狀類別建立反覆運算器和索引器配對。 |
在類別或結構內部。 |
| lock | 建立 lock 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| mbox | 建立 System.Windows.Forms.MessageBox.Show 呼叫。 您可能必須新增System.Windows.Forms.dll的參考。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| 命名空間 | 建立 namespace 宣告。 | 在命名空間內,包括全域命名空間。 |
| prop | 建立自動實作的屬性宣告。 | 在類別或結構內部。 |
| propfull | 建立具有 get 和 set 存取子的屬性宣告。 |
在類別或結構內部。 |
| propg | 建立具有私set用存取子的唯讀自動實作屬性。 |
在類別或結構內部。 |
| sim | 建立 靜態 int Main 方法宣告。 | 在類別或結構內部。 |
| struct | 建立 struct 宣告。 | 在命名空間 (包含全域命名空間)、類別或結構內部。 |
| svm | 建立靜態 void Main 方法宣告。 | 在類別或結構內部。 |
| switch | 建立 switch 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| try | 建立 try-catch 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| tryf | 建立 try-finally 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| 取消選取 | 建立 unchecked 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| unsafe | 建立 unsafe 區塊。 | 在方法、索引子、屬性存取子或事件存取子內。 |
| using | 建立 using 指示詞。 | 在命名空間內,包括全域命名空間。 |
| while | 建立 while 迴圈。 | 在方法、索引子、屬性存取子或事件存取子內。 |
C# 代碼段函式
函式指定於程式碼片段的 Function 項目中。 下表描述可用於 Function C# 代碼段中 元素的三個函式。
| 函式 | 描述 |
|---|---|
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>