VS代码片段(CodeSnippet)的制作以及常用代码片段记录

这篇具有很好参考价值的文章主要介绍了VS代码片段(CodeSnippet)的制作以及常用代码片段记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总目录



前言

本文将会探索VS中代码片段,并且学会自己制作代码片段,通过这种方式提高我们的编程效率。


一、代码片段是什么?

1.了解

先看下下面这段代码的编写
VS代码片段(CodeSnippet)的制作以及常用代码片段记录
是不是很熟悉?平常我们编写代码的使用,经常会使用prop,ctor等快速生成代码。
那么它到底是啥呢?我们能不能自己也写一个这些的快捷生成代码的方式呢?答案是:当然可以!

2.查找代码片段文件夹

VS 中 选择【工具】,然后选择【代码片段管理器】,然后语言选择【CSharp】,如下图所示:
VS代码片段(CodeSnippet)的制作以及常用代码片段记录
我们可以看到目录下有我们平常使用的一些快捷方式,现在我们进入上面【位置】的目录中:

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC#\Snippets\2052\Visual C#

VS代码片段(CodeSnippet)的制作以及常用代码片段记录
该文件夹下,就是存放代码片段的文件夹,那么我们后续自己编写的代码片段,放在这个文件夹下就可以使用了。

二、编写代码片段

1.认识代码片段

打开一个常用的for循环的snippet文件看看:
VS代码片段(CodeSnippet)的制作以及常用代码片段记录
一个xml文档,CodeSnippet 里面主要有Header 和 Snippet。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<!--Header 主要是对该快捷方式的描述-->
		<Header>
			<Title>for</Title><!--标题-->
			<Shortcut>for</Shortcut><!--这里就是定义快捷方式-->
			<Description>for 循环的代码片段</Description><!--描述文字-->
			<Author>Microsoft Corporation</Author><!--作者-->
			<SnippetTypes><!--类型-->
				<SnippetType>Expansion</SnippetType>
				<SnippetType>SurroundsWith</SnippetType>
			<SnippetType>Refactoring</SnippetType>
			<!--SnippetType 有三种:Expansion 和SurroundsWith 和Refactoring
				常用:Expansion 和SurroundsWith 
			    Expansion:允许将代码段插入到光标处。
				
				SurroundsWith:允许将此代码段放置在一段选定的代码周围。
				比如我们写完一段代码后,发现忘记加 try...catch... 了,
				这个时候可以选中需要包裹在 try...catch... 中的代码,然后调用 Code Snippet。				
			-->
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations><!--申明变量,供Code节点使用-->
				<Literal>
					<ID>index</ID>
					<Default>i</Default>
					<ToolTip>索引</ToolTip>
				</Literal>
				<Literal>
					<ID>max</ID>
					<Default>length</Default>
					<ToolTip>最大长度</ToolTip>
				</Literal>
			</Declarations>
			<Code Language="csharp"><!--核心部分:具体代码片段展示形式-->
				<![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++)
			{
			$selected$ $end$
			}]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>

2.编写自定义代码片段

1、trycf (try,catch,finally)

平常使用异常捕获的时候只有try 和 tryf 但是没有try,catch,finally完整形式的捕获,我们自定义一个如下所示:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>trycf</Title>
			<Shortcut>trycf</Shortcut>
			<Description>try catch finally 的代码片段</Description>
			<Author>lzk</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
				<SnippetType>SurroundsWith</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations>
				<Literal>
					<ID>expression</ID>
					<ToolTip>异常类型</ToolTip>
					<Function>SimpleTypeName(global::System.Exception)</Function>
				</Literal>
			</Declarations>
			<Code Language="csharp">
			<![CDATA[try 
	    {	        
		    $selected$
	    }
		catch ($expression$)
		{
			throw;
		}
	    finally
	    {
		    $end$
	    }]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>

2、propp(用于MVVMLight中)

平常在我们使用MVVMLight的时候,ViewModelBase中有一个Set方法使我们实现属性通知的时候很方便,我们同样可以将其制作成代码片段。

		//使用MVVMLight框架的时候,里面属性通知有两个方法
		//【第一种方式】:RaisePropertyChanged方法
        private string phone;

        public string Phone
        {
            get { return phone; }
            set { phone = value; RaisePropertyChanged(); }
        }
		//【第二种方式】:Set方法
        private string name;

        public string Name
        {
            get { return name; }
            set { Set(ref name, value); }
        }

显然使用Set 方法代码更为简洁,具体代码片段如下:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>propp</Title>
			<Shortcut>propp</Shortcut>
			<Description>MVVMLight中具有通知功能的属性代码片段</Description>
			<Author>lzk</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations>
				<Literal>
					<ID>type</ID>
					<ToolTip>属性类型</ToolTip>
					<Default>int</Default>
				</Literal>
				<Literal>
					<ID>property</ID>
					<ToolTip>属性名</ToolTip>
					<Default>MyProperty</Default>
				</Literal>
				<Literal>
					<ID>field</ID>
					<ToolTip>支持此属性的变量</ToolTip>
					<Default>myVar</Default>
				</Literal>
			</Declarations>
			<Code Language="csharp"><![CDATA[private $type$ $field$;

	public $type$ $property$
	{
		get { return $field$;}
		set { Set(ref $field$ , value);}
	}
	$end$]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>

3、ts (创建一个test方法)

平常有时候测试需要写一个临时的测试方法,如下图所示:

private void Test()
{ 
        
}

代码片段如下:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>ts</Title>
			<Shortcut>ts</Shortcut>
			<Description>测试方法的代码片段</Description>
			<Author>lzk</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
				<SnippetType>SurroundsWith</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations>
				<Literal>
					<ID>name</ID>
					<ToolTip>测试方法名</ToolTip>
					<Default>Test</Default>
				</Literal>
			</Declarations>
			<Code Language="csharp"><![CDATA[private void $name$ ()
	{
		$selected$$end$
	}]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>

4、更改propa 和propdp

当我们使用propa和propdp写依赖属性和附加属性的时候,总会生成如下代码:
VS代码片段(CodeSnippet)的制作以及常用代码片段记录
但是原生的这两个片段有如上的缺点,因此我们做如下修改:

  • propa
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Define an attached DependencyProperty</Title>
            <Shortcut>propa</Shortcut>
            <Description>Code snippet for an attached property using DependencyProperty as the backing store</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>Property Type</ToolTip>
                    <Default>int</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>Property Name</ToolTip>
                    <Default>MyProperty</Default>
                </Literal>
                <Literal>
                    <ID>ownerclass</ID>
                    <ToolTip>The owning class of this Property.  Typically the class that it is declared in.</ToolTip>
                    <Default>ownerclass</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp">
                <![CDATA[
                
public static $type$ Get$property$(DependencyObject obj)
{
    return ($type$)obj.GetValue($property$Property);
}

public static void Set$property$(DependencyObject obj, $type$ value)
{
    obj.SetValue($property$Property, value);
}

public static readonly DependencyProperty $property$Property =
    DependencyProperty.RegisterAttached("$property$", typeof($type$), typeof($ownerclass$), new PropertyMetadata(default($type$)));

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

  • propdp
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Define a DependencyProperty</Title>
            <Shortcut>propdp</Shortcut>
            <Description>Code snippet for a property using DependencyProperty as the backing store</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>Property Type</ToolTip>
                    <Default>int</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>Property Name</ToolTip>
                    <Default>MyProperty</Default>
                </Literal>
                <Literal>
                    <ID>ownerclass</ID>
                    <ToolTip>The owning class of this Property.  Typically the class that it is declared in.</ToolTip>
                    <Default>ownerclass</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp">
                <![CDATA[

public $type$ $property$
{
    get { return ($type$)GetValue($property$Property); }
    set { SetValue($property$Property, value); }
}

public static readonly DependencyProperty $property$Property = 
    DependencyProperty.Register("$property$", typeof($type$), typeof($ownerclass$), new PropertyMetadata(default($type$)));

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

3.使用自定义代码片段

  • 找到C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC#\Snippets\2052\Visual C# 文件夹
  • 随便找一个snippet文件复制出来,先将原内容删除,然后将以上内容全覆盖进去,保存
  • 然后在代码片段管理器中点击【导入】按钮,将自定义的代码片段文件导入即可使用。

总结

以上就是今天要介绍的内容,希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。文章来源地址https://www.toymoban.com/news/detail-473875.html

到了这里,关于VS代码片段(CodeSnippet)的制作以及常用代码片段记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【问题记录】VS Code 无法自动补全 Unity 脚本代码

    目录 一,设置 Unity 脚本文件使用 VS Code 打开 二,查看 Unity 要求的 dotnet 版本 三,下载对应版本的 dotnet 四,最后设置 VS Code 智能补全 Unity 代码 五,附加链接 Unity 内置支持在 VS Code 中打开脚本,作为Windows和macOS上的外部脚本编辑器。所以在 Unity 界面中的工具栏点击  Edit

    2024年02月09日
    浏览(44)
  • 网页制作基础学习——HTML+CSS常用代码

    Hello大家好,我是北辰!很高心您能来阅读! HTML超文本语言(Hyget Text Language) 1993 HTML1.0 2013 HTML5.0 HTML5的优势: 1.化繁为简 2.跨平台 3.跨浏览器 4.功能强大,新增特性 1. 标题标签 2. 段落标签 3. 换行标签 4. 水平线标签 5. 字体样式标签 6. 注释标签 7. 字符实体 8. 图像标签 9.

    2024年02月06日
    浏览(46)
  • phpcms_v9模板制作及二次开发常用代码

    ==== [{$r[catname]}] 所在版块的调用 0-1、调用指定栏目下面的内容页的内容 {pc:get sql=“SELECT * FROM v9_page where catid=31”} {loop $data $key KaTeX parse error: Expected \\\'EOF\\\', got \\\'}\\\' at position 4: val}̲ {str_cut(s… val[content]),705, ‘…’)} {/loop} {/pc} {str_cut( KaTeX parse error: Expected \\\'EOF\\\', got \\\'}\\\' at position 16:

    2024年02月07日
    浏览(31)
  • YOLO v8!| 附教程+代码 以及 vs YOLOv6 v3.0

    本文是我关于YOLOv8的经验和实验,以及和YOLOv6 v3.0的相关对比。 Part 1 - YOLOv8  Joseph Redmon、Santosh Divvala、Ross Girshick和Ali Farhadi推出了YOLO(You Only Look Once)系列计算机视觉模型,引起了许多人工智能爱好者的关注和喜爱。2023年1月10日,YOLO的最新版本——YOLO8发布,声称在结构和

    2024年02月08日
    浏览(37)
  • Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段

    OpenAI 推出的人工智能功能曾经只存在于科幻小说中。 2022年,Openai 发布了 ChatGPT,展示了先进的语言模型如何实现自然对话。 随后,DALL-E 问世,它利用文字提示生成令人惊叹的合成图像。 现在,他们又推出了 Text-to-Video 模型 Sora,将技术向前推进了一步。这种全新的扩散模

    2024年03月24日
    浏览(38)
  • Go代码片段品鉴

    作为一个服务端开发,熟悉我们服务的业务至关重要,但我们换工作的时候,也经常会换到别的业务场景下。比方说,我在成人教育的行业工作了2年,跳槽到了支付的行业。这么看的话,业务并不能成为服务端工程师的求职门槛。但我们可能会有被评价过缺少产品 sense,限制

    2024年02月10日
    浏览(33)
  • 深度学习代码片段收集

    sum(p.numel() for p in model.parameters() if p.requires_grad ) 可以用来计算参与训练的参数量 model.parameters() 返回模型中所有参数的迭代器。 if p.requires_grad: 这部分使用了一个条件判断,仅考虑那些 requires_grad 属性为 True 的参数。 requires_grad 是 PyTorch 中的一个属性,用于指示是否要在参数

    2024年02月04日
    浏览(26)
  • VSCode代码片段配置

    1.在VSCode设置 配置用户代码片段菜单添加  2.在输入框中选择新建代码片段   3.输入代码片段名称.例如:copyright 4. 生成第3步名称的代码片段文件,默认位置:C:Users 你的电脑名称 AppDataRoamingCodeUsersnippets 5. 代码片段模板的解释如下: 重点关注scope+prefix+body参数的配置,      

    2024年02月04日
    浏览(30)
  • 数学建模常用python代码【记录项、绘制多种图像】

    该代码通常适用于年月日都对应的 两种方法: 改成英语 或 加编码格式 实现效果 实现效果 实现效果 实现效果 实现效果 实现效果 实现效果 实现效果

    2024年02月10日
    浏览(34)
  • JavaScript 代码片段——计算时间距离

    需求:给定一个过去某个时间的时间字符串,例如 “2023-09-07 11:33:23”,返回距当前时间的距离,例如 “XX小时前”、“XX分钟前”、“刚刚”、超过一天显示原本时间。 输入:time = “2023-09-07 11:33:23” 代码: 返回:“21小时前”

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包