Visual stutio2005 代码段(code snippet) 使用详解

 

作者: 中科院计算所培训中心 王宇

如果想了解更多关于DotNet方面的技术资料,文章以及视频,请到本团队的主页:http://www.warensoft.cn

Visual stutio2005中新增加的代码段(code snippet)功能大大提高了我们开发的速度,我们只要写简单的几个字就可以实现一大段代码的编写,比如:

我们要写MessageBox.Show();只要写mbox然后再点两下Tab键就可以了,这种作法叫做“可扩展式代码段(Expension)”,除此之外,VS2005还支持外围式代码段(surround with)”的功能,使用时,先用鼠标选中要处理的代码,然后点右键,选中外侧代码”,如下图:

这里会出现如下菜单:

我们要作的是在外侧代码提示下输入你想要的代码段,比如”if”,然后点一下TAB,这时我们选中的代码就会被外围起来,如下图:

vs2005,绝大多数的代码都有代码段功能.那么大家就会问,我们能不能把自己常用的代码也做成code snippet?

我们当然可以,那么我们先要弄清楚MS已经实现的代码段是怎么写的呢?

首先打开工具->代码片段管理器(或者按住ctrl 再连续按下kb)”

会出现如下窗口:

 

选择visual C#,并且展开

先来看看if语句的代码片段,这里可以看到它的路径,是一个扩展名为.snippet的文件,我们把它打开,可以看到原代码:

<?xml version="1.0" encoding="utf-8"?>

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">

     <CodeSnippet Format="1.0.0">

         <Header>

              <Title>if</Title>

              <Shortcut>if</Shortcut>

              <Description>if 语句的代码段</Description>

              <Author>Microsoft Corporation</Author>

              <SnippetTypes>

                   <SnippetType>Expansion</SnippetType>

                   <SnippetType>SurroundsWith</SnippetType>

              </SnippetTypes>

         </Header>

         <Snippet>

              <Declarations>

                   <Literal>

                       <ID>expression</ID>

                       <ToolTip>要计算的表达式</ToolTip>

                       <Default>true</Default>

                   </Literal>

              </Declarations>

              <Code Language="csharp"><![CDATA[if ($expression$)

     {

         $selected$ $end$

     }]]>

              </Code>

         </Snippet>

     </CodeSnippet>

</CodeSnippets>

大家可以看到,其实这个文件是一个XML文件,并且包含多个子节点,我们可以把这个XML文件的根合并,然后一级一级的分析:

这里面包含两个可以展开的子节点:<Header>子节点和<Snippet>子节点

<Header>子节点:用于表示当前Code Snippet文件的一些声明信息,包括(“//”表示作者添加的注解):

<Title>if</Title>//代码片段的标题

              <Shortcut>if</Shortcut>//该代码片段的快捷方式(也就是说你输入什么字母能出来)

              <Description>if 语句的代码段</Description>//输入快捷方式后和提示

 

              <Author>Microsoft Corporation</Author>//哪个公司出的

              <SnippetTypes>

                   <SnippetType>Expansion</SnippetType>//指明该代码段可以用作扩展的

                   <SnippetType>SurroundsWith</SnippetType>//指明该代码段可以用作外围的

              </SnippetTypes>

<Snippet>子节点是代码段的正文,其中包括两个子节<Declarations>子节和<Code >子节,如下图:

<Declarations>子节用于定义代码变量,在该子节中可以包括多个<literal>子节,每一个<literal>子节都是一个变量,说到这里,大家会问,难道CodeSnippet中还需要有变量吗?是的,一定要有!原因如下:

当我们利用代码段写完一个语句块时,总有一些内容是需要再次修改的,比如:输入完if语句的代码段之后,生成的代码如下:

If语句的默认条件是true,用户可能将其改为自己想要的条件,这时true就是一个变量,因此if语句就有一个变量.再比如说,输入完for语句的代码段后,代码如下:

这里用于循环计数的i可能会发生改变,表示循环的length也会被修改,因此length也是一个变量.for语句的代码段中就包括两个参数.了解这些之后,我们来看一下,if语句中的参数是如何定义的,

<Literal>

                       <ID>expression</ID>//变量的名

                       <ToolTip>要计算的表达式</ToolTip>//变量的提示(当鼠标停留在变量上面)

                       <Default>true</Default>//默认的值

                   </Literal>

                  

 

下面我们来说一下<Code >子节,该节是代码段实现的正文,内容如下:

<Code Language="csharp"><![CDATA[if ($expression$)

     {

         $selected$ $end$

     }]]>

</Code>

在该节中,Language属性说明该代码段是在C#语言中使用的.CDATA表示后面的内容为字符串.灰色的文字表示要输出的文字,在要输出的文字中,有两种字符,一种是没有任何标记的,if,表示它将直接输出.另外一种字符前后都有$符号,该符号表明这是一个前面定义好的变量,比如$expression$就是我们前面看到的<Literal>节中定义的那个变量,这种字符在输出的时候会按着该变量的默认值输出,这里$expression$变量的默认值是true.

后面的$selected$ $end$标记表明在输入完代码段时,我们按下回车键中光标所处的位置.

经过上面的讲解,大家应该明白代码段是怎么定义的了吧?:)

下面,我们来根据上面的经验来自己定义一个代码段吧.代码如下:

<?xml version="1.0" encoding="utf-8"?>

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">

  <CodeSnippet Format="1.0.0">

    <Header>

      <Title>def</Title>

      <Shortcut>def</Shortcut>

      <Description>defining a new object </Description>

      <Author>www.MakingMyMoney.com</Author>

      <SnippetTypes>

        <SnippetType>Expansion</SnippetType>

      </SnippetTypes>

    </Header>

    <Snippet>

      <Declarations>

        <Literal>

          <ID>DataType</ID>

          <ToolTip>数据类型</ToolTip>

          <Default>object</Default>

        </Literal>

        <Literal>

          <ID>Variant</ID>

          <ToolTip>变量</ToolTip>

          <Default>var</Default>

        </Literal>

      </Declarations>

      <Code Language="csharp">

        <![CDATA[$DataType$ $Variant$=new $DataType$();$selected$ $end$   

     ]]>

      </Code>

    </Snippet>

  </CodeSnippet>

</CodeSnippets>

 

 

该代码段实现的功能是帮助我们快速定义变量.我们可以想象一下,定义一个变量的时候,我们的代码通常是这样的:

DataSet ds = new DataSet();

这里数据类型及构造函数是一个样,并且可能是经常改变的,因此,我这里将它定义为一个变量 DataType,另外上面一行代码中的变量名也会改变,因此这里又定义第二个变量 DataType.

呵呵到这里,另的我就不说了,大家一起学习一下吧.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值