代码段

本文主要:如何制作Visual Studio 代码段,代码段作用,和如何使用。

我们有时候会打出很多重复的代码,只是结构一样。

例如属性

        /// <summary>
        /// 编码
        /// </summary>
        public Encoding encoding
        {
            set
            {
                _encoding = value;
            }
            get
            {
                return _encoding;
            }
        }
        private Encoding _encoding=Encoding.UTF8;

属性我们可以使用

prop 和按两次tab输入

如果需要带字段,那么可以使用propfull,请看下面

        private string myVar;

        public string MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }

但很多时候我们需要使用通知OnPropertyChanged,这时在 VisualStudio 就没有写好的,如果是写属性,这样每个都来增加一句OnPropertyChanged工作量重复很多。

在之前,我就知道了有代码段,但是实在复杂,好在最近时间多,仔细看了一下。

代码片段是小块可重用的代码,可使用上下文菜单命令或热键组合将其插入代码文件中。 代码片段通常包含常用的代码块(如 try-finally 或 if-else 块),可用于插入整个类或方法。

代码段使用很简单,在类中,如果我们需要输入try-catch,我们可以按

try tab tab
    try 
	{	        
		
	}
	catch (Exception)
	{

		throw;
	}

如果是 VisualStudio 可以使用

Ctrl+K 和 X 或 Ctrl+K 和 S

visual studio 有的代码参见:https://msdn.microsoft.com/zh-cn/library/z41h7fat.aspx

创建代码段可以使用snippet editor

但是这个是比较旧

我们可以使用创建模板

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title></Title>
    </Header>
    <Snippet>
      <Code Language="">
        <![CDATA[]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

我们可以在visual studio创建xml文件写,这样比较容易

如果使用笔记本,必须编码为utf-8,开始我弄成ascii就错了

让我来告诉大家,代码的格式,代码段最先是CodeSnippets

CodeSnippets说明: xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"

然后就是他的格式,只需要复制下面的代码

<CodeSnippet Format="1.0.0">

下来Header,里面有标题、作者、描述、快捷键信息。标题是必填

<Title>标题</Title>

作者可以选,描述可以选

<Author>lindexi_gd</Author>
 <Description>描述</Description>

快捷键不是按下同时键,是输入一段代码就可以按tab的文字

<Shortcut>ps</Shortcut>

代码段核心是<Snippet> 里面有<Declarations>描述,code <Declarations>可以写每个参数的描述

例如do代码就是这样写

			<Declarations>
				<Literal>
					<ID>expression</ID>
					<ToolTip>要计算的表达式</ToolTip>
					<Default>true</Default>
				</Literal>
			</Declarations>

ID写在![CDATA[使用变量名,<ToolTip>描述,<Default>默认值

代码写在![CDATA[,需要先写语言Language="csharp"告诉代码在什么语言使用。下面的例子是 do ,因为他的代码很少

			<Code Language="csharp"><![CDATA[do
	{
	        $selected$ $end$
	} while ($expression$);]]>
			</Code>

在上面代码可以看到存在两个$的,这就是参数,下面来告诉大家,什么是参数

模板参数:

模板参数声明和启用用两个$$把变量名写在$parameter$

![CDATA[可以使用$parameter$变量

有一些变量名不能使用,具体有哪些,请看https://msdn.microsoft.com/zh-cn/library/eehb4faa.aspx

写完了代码之后就需要导入。

导入代码段方法

我们可以把之前写的代码导入到代码段,这里使用的是 ps tab

我们可以使用$selected$$end$ 来定位代码光标的开始

在code可以加上Delimiter

Delimiter 可选特性。指定用于描述代码中的文本和对象的分隔符。默认情况下,分隔符为 $。

kind 代码段必须插入位置,方法,类中,请看https://msdn.microsoft.com/zh-cn/library/ms171418.aspx

下面是一些常用的代码,直接复制就可以使用

ps

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>ps</Title>
      <Author>lindexi</Author>
      <Description>插入属性</Description>
      <HelpUrl />
      <SnippetTypes />
      <Keywords />
      <Shortcut>ps</Shortcut>
    </Header>
    <Snippet>
			<Declarations>
				<Literal>
					<ID>string</ID>
					<Default>string</Default>
					<ToolTip>类型名</ToolTip>
				</Literal>
				<Literal>
					<ID>name</ID>
					<Default>name</Default>
					<ToolTip>属性名</ToolTip>
				</Literal>
			</Declarations>
      <Code Language="csharp" kind="method decl"><![CDATA[public $string$ $name$
{
    set
    {
         _$name$=value;         
    }
    get
    {
         return _$name$;
    }
}
$slected$ $end$
private $string$ _$name$;]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

pvs

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>pvs</Title>
      <Author>lindexi</Author>
      <Description>插入属性</Description>
      <HelpUrl />
      <SnippetTypes />
      <Keywords />
      <Shortcut>pvs</Shortcut>
    </Header>
    <Snippet>
			<Declarations>
				<Literal>
					<ID>string</ID>
					<Default>string</Default>
					<ToolTip>类型名</ToolTip>
				</Literal>
				<Literal>
					<ID>name</ID>
					<Default>name</Default>
					<ToolTip>属性名</ToolTip>
				</Literal>
			</Declarations>
      <Code Language="csharp" kind="method decl"><![CDATA[public $string$ $name$
{
    set
    {
         _$name$=value;
         OnPropertyChanged("$name$");
    }
    get
    {
         return _$name$;
    }
}
$slected$ $end$
private $string$ _$name$;]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>cla</Title>
      <Author>lindexi</Author>
      <Description></Description>
      <Shortcut>cla</Shortcut>
    </Header>
    <Snippet>
			<Declarations>
				<Literal>
					<ID>name</ID>
					<Default>name</Default>
					<ToolTip></ToolTip>
				</Literal>
			</Declarations>
      <Code Language="csharp" kind="method decl"><![CDATA[
/// <summary>
///
/// </summary>
public class $name$
{
        public $name$()
        {

        }
$slected$ $end$
}
]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

如果需要使用Resharper的代码段,请看resharper 自定义代码片


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

命令行通配符教程

一次性操作多个文件时,命令行提供通配符(wildcards),用一种很短的文本模式(通常只有一个字符),简洁地代表一组路径。

772
来自专栏自动化测试实战

接口测试框架——第二篇

3748
来自专栏Scott_Mr 个人专栏

React Native 系列(一) -- JS入门知识

38110
来自专栏日常分享

$.ajax()方法详解

1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。

2812
来自专栏逆向技术

异常处理第三讲,SEH(结构化异常处理),异常展开问题

           异常处理第三讲,SEH(结构化异常处理),异常展开问题 不知道昨天有木有小伙伴尝试写一下SEH异常处理的代码.如果没写过,请回去写( :...

23310
来自专栏FreeBuf

Python黑客学习笔记:从HelloWorld到编写PoC(上)

本系列文章适合CS在读学生和万年工具党,本文会在英文原文的基础上做些修改,并适当增加些解释说明。 ? 本篇包含原文的前几部分: 0x0 – Getting St...

29310
来自专栏西二旗一哥

iOS - Dissecting objc_msgSend on ARM64

我们的朋友 ldp 又出现了。这回它读取了 x12 中指针,这个指针指向了要查找的bucket。每个bucket包含了一个选择器和一个 IMP 。 x9 现在包...

1194
来自专栏北京马哥教育

Linux Bash脚本15分钟进阶教程

这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。

730
来自专栏aCloudDeveloper

总结:常用的通用数据处理指令

作者:bakari  时间:2012.4.21 1、 操作数类型 Imm立即操作数 Reg寄存器操作数 Mem内存操作数 2、 操作数寻址方式 立即数寻址 寄存...

2028
来自专栏coding...

swift3.0 基础练习-实现99乘法表

723

扫码关注云+社区

领取腾讯云代金券