C# 程式碼片段
在 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>