跳至页脚内容
Iron Academy Logo
C# 工具与生产力

在 C# 中创建代码片段 - 自定义 Visual Studio 以提高效率

Tim Corey
48m 46s

对于使用 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 的建议不要只是从其他文件复制粘贴--将其变成一个片段,然后再也不要重复输入。

Hero Worlddot related to 在 C# 中创建代码片段 - 自定义 Visual Studio 以提高效率
Hero Affiliate related to 在 C# 中创建代码片段 - 自定义 Visual Studio 以提高效率

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我