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 建立具有 getset 存取子的屬性宣告。 在類別或結構內部。
propg 建立具有私set用存取子的唯讀自動實作屬性 在類別或結構內部。
sim 建立 staticint Main 方法宣告。 在類別或結構內部。
struct 建立 struct 宣告。 在命名空間 (包含全域命名空間)、類別或結構內部。
svm 建立 staticvoid 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>