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

news2024/11/28 4:32:02

总目录


文章目录

  • 总目录
  • 前言
  • 一、代码片段是什么?
    • 1.了解
    • 2.查找代码片段文件夹
  • 二、编写代码片段
    • 1.认识代码片段
    • 2.编写自定义代码片段
      • 1、trycf (try,catch,finally)
      • 2、propp(用于MVVMLight中)
      • 3、ts (创建一个test方法)
    • 3.使用自定义代码片段
  • 总结


前言

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


一、代码片段是什么?

1.了解

先看下下面这段代码的编写
在这里插入图片描述
是不是很熟悉?平常我们编写代码的使用,经常会使用prop,ctor等快速生成代码。
那么它到底是啥呢?我们能不能自己也写一个这些的快捷生成代码的方式呢?答案是:当然可以!

2.查找代码片段文件夹

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

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

在这里插入图片描述
该文件夹下,就是存放代码片段的文件夹,那么我们后续自己编写的代码片段,放在这个文件夹下就可以使用了。

二、编写代码片段

1.认识代码片段

打开一个常用的for循环的snippet文件看看:
在这里插入图片描述
一个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>

3.使用自定义代码片段

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

总结

以上就是今天要介绍的内容,希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础入门:实时音视频技术基础知识全面盘点

1、引言 随着移动网络速度越来越快、质量越来越来&#xff0c;实时音视频技术已经在各种应用场景下全面开花&#xff0c;语音通话、视频通话、视频会议、远程白板、远程监控等等。 实时音视频技术的开发也越来越受到重视&#xff0c;但是由于音视频开发涉及知识面比较广&…

可视化搭建,1天开发1款“智慧楼宇”应用

随着我国城市建设的飞速发展&#xff0c;现代建筑正朝着智能化和网络化不断前进。物联网技术、智能化技术使得建筑内众多公共资源具有语境感知能力&#xff0c;现代建筑进入了智慧楼宇阶段。 天翼物联推出智慧楼宇应用&#xff0c;为物业等管理单位提供安全监控、能源监控、智慧…

【DBN分类】基于哈里斯鹰算法优化深度置信网络HHO-DBN实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

oracle学习篇(一)

oracle学习篇(一) 1 oracle属于大型数据库吗? 解答:是的,数据库按照负载量的规模可以分为一下几类 小型数据库:ACCESS 中型数据库:mysql 大型数据库(海量数据):oracle、db22 创建并使用户可用 2.0 前提 必须是要sys或者system这种需要有管理权限的才能进行用户的创建 普通…

链表反转,指定区间反转,k个一组反转---详解

牛客上的三道反转链表的题&#xff0c;入门题&#xff0c;反转链表有很多种做法&#xff0c;本来做第一题的时候是随便写了一种&#xff0c;然后后面发现我用的方法&#xff0c;在做第二题第三题的时候有点繁琐&#xff0c;所以就把三道题一起考虑了一下&#xff0c;选了一种相…

[附源码]Python计算机毕业设计二手图书回收销售网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

python3.9.0 windows环境搭建

第一步&#xff1a; 下载安装包&#xff1a;CNPM Binaries Mirror 执行exe安装。。。。。 第二步&#xff1a;升级pip 和 setuptools&#xff08;避免在每一个虚拟环境中都要升级&#xff09; python -m pip install --upgrade pip python -m pip install --upgrade setuptoo…

基于android音乐播放器的设计

本科毕业论文&#xff08;设计&#xff09;诚信声明 本人郑重声明&#xff1a;所呈交的毕业论文&#xff08;设计&#xff09;&#xff0c;题目《………基于android音乐播放器的设计……………………………》是本人在指导教师的指导下&#xff0c;进行研究工作所取得的成果。对…

ChatGPT写Flask-Demo——有体验地址

ChatGPT中API的试用 最近ChatGPT智能AI很火&#xff0c;可以写代码&#xff0c;DEBUG&#xff0c;写简历等等 上去查看了一下&#xff0c;是可以调用API的&#xff0c;本着学习的态度就是用这个款AI辅助我写了一个demo&#xff08;本人原来对flask只懂一点点&#xff09; 目录0…

基于51单片机的数字电压表(ADC0832)(Proteus仿真+程序)

编号&#xff1a;29 基于51单片机的数字电压表&#xff08;ADC0832&#xff09; 功能描述&#xff1a; 本设计由51单片机最小系统ADC0832模块两路模拟量输入模块液晶1602显示模块 1、主控制器是AT89C82单片机 2、ADC0832模数转换器进行A/D转换&#xff0c;读取电压两路数据&a…

栅格瓦片和矢量瓦片

地图瓦片 地图瓦片的诞生 在以前没有瓦片的概念时&#xff0c;由于地图要素多、范围大等特点导致地图数据量很大&#xff0c;如果从浏览器可视化地图就对网络和数据渲染能力有高的要求&#xff0c;所以导致瓦片诞生以前&#xff0c;地图多在pc电脑中桌面软件使用。随着互联网…

【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)

前言 前面我们给大家介绍了基于LabVIEWYOLOv3/YOLOv4的物体识别&#xff08;对象检测&#xff09;&#xff0c;今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5的物体识别&#xff0c;本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视…

一个简单的MATLAB脚本——快速行进算法(FMM))

一个简单的MATLAB脚本——快速行进算法&#xff08;FMM&#xff09; 介绍快速行进算法&#xff08;FMM&#xff09;的简单MATLAB脚本&#xff0c;不到20行代码实现快速行进算法的运算结果&#xff0c;而且计算速度非常快。给了两个实例模型来说明计算结果。 文章目录一个简单的…

unicloud生成微信小程序分享码

一&#xff0c;方案 看了官方的文档&#xff0c;获取小程序码有三种&#xff0c;我采用的是第二种&#xff1a;生成数量不受限制的分享码。 对应的官方文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.…

MySQL 锁

在之前的文章有多次提到&#xff0c;MySQL在数据更新和性能优化上会用到锁机制。我们在实际的应用中也经常会遇到锁相关的问题&#xff0c;即使很多时候我们并没有人为的为数据库添加锁&#xff0c;但还是会出现死锁的问题&#xff0c;这是因为在我们操作数据时MySQL隐式的帮我…

java UDP通信程序DatagramSocket数据发送

首先 我们先来了解一下 UDP 首先 他是一种不可靠的网络协议 他在通信的两端 各建立一个 Socke对象 但是他们只是 发送和接收数据的对象 发送端只管发送 不会顾及接收端是否接到 接收到只负责接收数据 而不会给出发送端反馈 因此对于UDP通信的双方而言 是有没什么 客户端和服务…

架构师进阶,微服务设计与治理的 16 条常用原则

今天将从存储的上一层「服务维度」学习架构师的第二项常用能力 —— 微服务设计与治理。 如何设计合理的微服务架构&#xff1f; 如何保持微服务健康运行&#xff1f; 这是我们对微服务进行架构设计过程中非常关注的两个问题。 本文对微服务的生命周期定义了七个阶段&#xf…

正大国际期货:为什么外盘期货顺势交易这么难

要回答“为什么趋势交易这么难&#xff1f;”需要先回答&#xff1a;“为什么交易&#xff1f;”。 你应该为了抓住赚取期望利润的机会而交易&#xff0c;为了长期持续赚钱的目的而交易&#xff0c;而不是为了赚得短期利润的喜悦而交易&#xff0c;也不是为了证明你的市场分析…

音频转文字怎么转?这些方法值得一试

在日常生活中我们经常会遇到要把音频转换成文字的情况&#xff0c;很多小伙伴还在使用传统的方法&#xff0c;一边播放一边记录。虽然这样能解决问题&#xff0c;但是需要花费很多时间&#xff0c;效率特别低。我们不妨尝试使用一些转换软件&#xff0c;这样就能节省很多时间了…

界面组件Kendo UI for Angular——让应用数据显示更直观!(二)

Kendo UI致力于新的开发&#xff0c;来满足不断变化的需求&#xff0c;通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for Angular是专用于Angular开发的专业级Angular组件&#xff0c;telerik致力于提供纯粹的高性能Angular UI组件&#xff0c…