在 C# 中创建代码片段 - 自定义 Visual Studio 以提高效率
对于使用 C# 的开发人员来说,重复是一个现实问题。 从编写属性到设置控制台方法和捕获异常,某些任务都可以简化。 这就是代码片段的用武之地--小巧、强大、可重复使用的代码块,您只需使用快捷键就能将其快速插入到您的项目中。
在本文中,我们将在 C# 培训专家 Tim Corey 的指导下,探讨如何在 Visual Studio 中创建和使用自定义代码片段。 在他关于"在 C# 中创建代码片段--自定义 Visual Studio 以提高效率"的视频中,Tim 提供了实用的步骤、评论和示例,您可以直接应用到自己的项目中。 最后,您将能够提高工作效率、编写更易读的代码,并在整个开发工作中实施最佳实践。
代码片段为何重要
Tim 首先分享了他如何经常使用片段来插入自动属性、构造函数和foreach 循环等内容。 他演示了输入 cw 并按两次 Tab 键后如何插入 Console.WriteLine(),将光标置于括号之间--这是字符串内容输出的基本技巧。
但正如他所指出的,并非每一种有用的方法都有内置的片段。 例如,Console.ReadLine() 中缺少一个。 蒂姆的回答? 自己创建。
在 Visual Studio 中设置演示项目
为了结合上下文进行演示,Tim 在 Visual Studio 中设置了一个 ASP.NET Core 网络应用程序。 虽然项目的类型并不关键,但有 C# 和 HTML 文件可以让他展示两种语言的例子。
这里需要重点提醒的是:片段并不局限于 C#--它们可以适用于 Visual Studio 支持的多种语言,包括 HTML、XAML 等。
内置片段和快捷键的力量
Tim 演示了几个现有的片段:
cw + Tab Tab → Console.WriteLine()
ctor + Tab Tab → 构造函数
prop + Tab Tab → 自动实现属性(例如,public string Test { get; set; })
- propfull → 创建一个带有后备字段的属性
这些快捷方式旨在消除重复并提高性能。 您只需指定一个类型(如字符串或 int)和一个名称,其余的就可以自动生成了。
这些内置片段还可以演示插值、访问修饰符(如 public)和系统定义的元素,确保您的代码遵循一致的结构。
在 VS 代码中创建您自己的代码段
Tim 没有使用片段生成器工具,而是选择了 Visual Studio Code,因为它简单易用,还具有 XML 语法高亮功能。
他创建了一个名为 readline.snippet 的文件,并展示了基本的 XML 结构:
<CodeSnippets>
<CodeSnippet Format="1.0.0">
<Header>
<Title>Console.ReadLine</Title>
<Shortcut>cr</Shortcut>
<Description>Creates Console.ReadLine()</Description>
<Author>Tim Corey</Author>
</Header>
<Snippet>
<Code Language="csharp"><!-- [CDATA[
Console.ReadLine();
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets><CodeSnippets>
<CodeSnippet Format="1.0.0">
<Header>
<Title>Console.ReadLine</Title>
<Shortcut>cr</Shortcut>
<Description>Creates Console.ReadLine()</Description>
<Author>Tim Corey</Author>
</Header>
<Snippet>
<Code Language="csharp"><!-- [CDATA[
Console.ReadLine();
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>这是一个基本片段,使用 <!-- [CDATA[]]> 来封装原始 C# 代码。 现在,快捷键 cr 只需按两次 Tab 键即可触发 Console.ReadLine() 方法的插入。
Tim 指出,格式将从用户的 Visual Studio 环境中继承,这意味着缩进和间距将与您的设置相匹配。
将片段导入 Visual Studio.
Tim 将讲解如何使用 "工具">"代码片段管理器 "导入 .代码片段文件。 他选择了 "我的代码片段 "位置,确保片段在需要时出现。
导入后,键入 cr + Tab Tab 即可插入 Console.ReadLine() 行,随时可将其值赋值给变量或用于异常处理块。
可重复使用的文档头
接下来,Tim 演示了一个文档片段--这是企业项目或协作团队经常需要的。 他使用 docme 创建了一个片段,该片段会生成一个注释块:
/// Title:
/// Author:
/// Date:
/// Purpose:/// Title:
/// Author:
/// Date:
/// Purpose:这是跟踪更改、作者和文件上下文的理想选择。 虽然 Git 等工具可以处理版本问题,但标题可以提供快速的可视化参考,尤其是在大型团队中。
HTML片段:Bootstrap 表单示例
片段不仅适用于 C# 代码。 Tim 演示了如何在 HTML 中使用这些工具--它们非常适合构建表单、输入元素和结构化标记集合。
他复制了一个 Bootstrap 表单示例,并将其包装成相同的 XML 片段格式,将语言改为 html。 导入后,输入快捷键 sampleform 即可插入一个现成的 HTML 结构,使您无需反复引用外部 URL 或复制模板。
带有占位符和变量的高级代码段
这就是更高级、更强大的地方。 Tim 构建了一个片段,用于检索配置值:
_config.GetValue<string>("values:myTest");_config.GetValue<string>("values:myTest");他展示了如何为类型(字符串、int、bool)和路径(values:myTest)使用占位符,这样开发人员只需填写不同的内容。
在 XML 中,他使用了
<Declarations>
<Literal>
<id>ValType</id>
<Default>string</Default>
<ToolTip>Data type of the value</ToolTip>
</Literal>
<Literal>
<id>Path</id>
<Default>values:myTest</Default>
<ToolTip>Config path</ToolTip>
</Literal>
</Declarations><Declarations>
<Literal>
<id>ValType</id>
<Default>string</Default>
<ToolTip>Data type of the value</ToolTip>
</Literal>
<Literal>
<id>Path</id>
<Default>values:myTest</Default>
<ToolTip>Config path</ToolTip>
</Literal>
</Declarations>在片段正文中
_config.GetValue<$ValType$>("$Path$")_config.GetValue<$ValType$>("$Path$")通过使用变量和声明,可以灵活、生动、简洁地生成代码。 它非常适合安全设置检索、字典访问或从 JSON 文件中读取嵌套值等任务。
为什么片段可以提高性能
最后,Tim 解释了代码片段不仅能提高速度,还能促进实践的一致性、减少错误并提高整个团队的代码可读性。 随着时间的推移,即使每个片段节省几秒钟,也能节省几个小时的时间。
他强调,片段有助于
常见任务初始化
使用 try-catch-finally 进行标准化异常处理
创建整个类模板
- 在最终代码块、结构化捕获代码块和方法重载中工作
最后的想法:开发人员的优势
无论您是在构建复杂的系统还是简单的应用程序,代码片段都能帮助您更快、更稳定地编写 C# 代码或 C# 代码。 它们能让您
消除重复
关注业务逻辑
- 保持代码库的整洁、插值和完善的文档记录
正如 Tim 在他的综合视频中建议的那样,探索自己的编码习惯。 发现您重复输入相同内容的地方。 然后,确定一种方法:创建一个片段。
您很快就会发现,您已经改变了工作流程,使开发工作更加高效、有序和愉快。
快速入门的片段构思
tryfinally - 生成 try + finally 块
logerror - 使用 Log.Error() 插入日志记录逻辑
propnotify - 使用 INotifyPropertyChanged 的属性
filecheck - If File.Exists(path) 内嵌逻辑
- foreachdict - 循环字典<TKey, TValue>
Tim 的建议不要只是从其他文件复制粘贴--将其变成一个片段,然后再也不要重复输入。

