實(shí)例講解Visual Studio代碼段
Visual Studio還是比較常用的,于是我研究了一下Visual Studio代碼段,代碼段是Visual Studio 2005 中最能體現(xiàn)效率的特點(diǎn)之一。在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。它可以避免單調(diào)乏味的輸入過(guò)程(例如鍵入 for 循環(huán)),使您能夠快速插入Visual Studio代碼段,它還可以提供可完成特定任務(wù)(如通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù))的模板。大部分內(nèi)置的 C# 代碼段都屬于第一種類型 -這些代碼段可以幫助您將重復(fù)輸入降到最低,而很大一部分內(nèi)置的 VB 代碼段都屬于第二種類型 - 使用這些代碼段可以更容易地編寫執(zhí)行特定任務(wù)的代碼。
#t#有兩種插入Visual Studio代碼段的方式。您可以在代碼編輯器中鍵入代碼段的別名,然后按兩次 Tab 鍵(對(duì)于 VB 只需按一次 Tab 鍵)即刻插入代碼段。在插入代碼段之后,您可以通過(guò)按 Tab 鍵和 Shift+Tab 鍵跳到代碼段的不同區(qū)域。這允許您快速更改需要修改的代碼部分。請(qǐng)注意:在 C# 中,代碼段別名也具有 IntelliSense。您可以在 IntelliSense 列表中通過(guò)其代碼段圖標(biāo)指明某一項(xiàng)為代碼段。
如果忘記了代碼段的別名,還可以按“Ctrl+K、Ctrl+X”在代碼編輯器內(nèi)插入別名,也可單擊鼠標(biāo)右鍵,然后選擇“插入代碼段...”。這會(huì)顯示代碼段選取器,使用它可以瀏覽適用于當(dāng)前編程語(yǔ)言的所有代碼段以及選擇要插入的代碼段。這種插入Visual Studio代碼段的方法對(duì)于 C# 和 Visual Basic 均有效。對(duì)于 Visual Basic 用戶,還可以有另一種插入Visual Studio代碼段的方式:您可以鍵入代碼段別名的前幾個(gè)字母,后跟“?”,然后按 Tab 鍵。Visual Studio 會(huì)顯示一個(gè)按字母排序的列表,其中包含與突出顯示的內(nèi)容最為匹配的所有代碼段的別名。此功能僅適用于 Visual Basic 用戶。
從個(gè)人角度將,最令人興奮的代碼段功能部分是,您可以為個(gè)人使用而創(chuàng)建自己的代碼段,也可以將其分享給其他同行使用。當(dāng)然,您也可以下載其他開(kāi)發(fā)人員創(chuàng)建好的代碼段。
在 Visual Studio內(nèi)部非常容易就可以創(chuàng)建您自己的代碼段。我將通過(guò)一個(gè)示例說(shuō)明如何操作。我經(jīng)常會(huì)編寫一些應(yīng)急的實(shí)用程序來(lái)幫助我完成工作。其中的許多實(shí)用程序都有通用的模式:打開(kāi)某個(gè)文件,執(zhí)行一些處理,然后關(guān)閉該文件。以下是我的代碼段的創(chuàng)建步驟。
步驟 1: 創(chuàng)建 XML 文件。每個(gè)代碼段都包含在一個(gè) XML 文件中。在 Visual Studio內(nèi)部,只要轉(zhuǎn)到“文件”>“新建. . .”>“文件. . .”,然后選擇“XML 文件”類型即可。
步驟 2:定義代碼段。如果有足夠的興趣,甚至還有一個(gè)可創(chuàng)建代碼段的代碼段。只要在該文件的第二行按下 Ctrl+K、Ctrl+X,選擇“Snippet”代碼段,就會(huì)自動(dòng)為您插入一個(gè)代碼段文件的模板。
標(biāo)題、作者、快捷鍵和描述字段這些內(nèi)容不言自明,我就不再具體說(shuō)明了。< Snippet> 標(biāo)簽中的內(nèi)容值得討論,我下面的例子可以對(duì)此給出最好的解釋。
實(shí)際上,您將所有代碼放在了 <! [CDATA[...]]> 標(biāo)簽之內(nèi),而該標(biāo)簽是在 </ Code> 標(biāo)簽的內(nèi)部。對(duì)于那些希望用戶可以輕松替換的字段,您可以在這些字段兩邊放置一對(duì)“$”字符。在我的示例中,我設(shè)置了三個(gè)我的代碼段用戶可以輕松替換的參數(shù):StrmReader、FilePath 和 Line。這三個(gè)參數(shù)在 CDATA 部分的內(nèi)部使用,每個(gè)參數(shù)兩側(cè)都有一對(duì)“$”字符。此外,每個(gè)參數(shù)也必須在 < Declarations> 元素中進(jìn)行定義。為每個(gè)參數(shù)指定一個(gè) ID 和一個(gè)默認(rèn)值(可選)。
敏銳的讀者會(huì)注意到,在我的代碼段內(nèi)部還有另外一個(gè)我沒(méi)有定義的參數(shù): $end$。這是一個(gè)特殊參數(shù),用于指定用戶在代碼段字段中填寫完內(nèi)容并按下 Enter 鍵后光標(biāo)所在的位置。還有一個(gè)我在此處沒(méi)有列出的特殊參數(shù):$selected$。$selected$ 參數(shù)只對(duì) SurroundsWith 類型的代碼段有意義。它用于定義在使用“Surround With...”插入Visual Studio代碼段時(shí)所選的代碼段的放置位置。
- <?xml version="1.0" encoding="utf-8"?>
- <CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
- <Header>
- <Title>File Processing</Title>
- <Author>James Lau</Author>
- <Shortcut>fp</Shortcut>
- <Description>Opens a file, does some processing, and then closes the file.</Description>
- <SnippetTypes>
- <SnippetType>SurroundsWith</SnippetType>
- <SnippetType>Expansion</SnippetType>
- </SnippetTypes>
- </Header>
- <Snippet>
- <Declarations>
- <Literal>
- <ID>StrmReader</ID>
- <Default>strmReader</Default>
- </Literal>
- <Literal>
- <ID>FilePath</ID>
- <Default>fPath</Default>
- </Literal>
- <Literal>
- <ID>Line</ID>
- <Default>strLine</Default>
- </Literal>
- </Declarations>
- <Code Language="CSharp">
- <![CDATA[
- StreamReader $StrmReader$ = null;
- try
- {
- $StrmReader$ = new StreamReader($FilePath$);
- string $Line$;
- while (($Line$ = $StrmReader$.ReadLine()) != null)
- {
- // Perform some processing
- $selected$
- $end$
- }
- }
- catch (IOException ioex)
- {
- // Handle exception
- }
- finally
- {
- $StrmReader$.Close();
- }
- ]]>
- </Code>
- </Snippet>
- </CodeSnippet>