【问题标题】:Shortcut for creating constructor with variables (C# Visual Studio 2010)使用变量创建构造函数的快捷方式 (C# Visual Studio 2010)
【发布时间】:2012-02-12 05:15:01
【问题描述】:

在 Visual Studio 2010 C# 中,您可以在类中键入 ctor,然后按 tab,Visual Studio 将为我创建该类的构造函数。很方便。

但是有没有办法让 Visual Studio 创建一个包含我所有变量、属性等的构造函数?

例如,

public class User
{
    public String UserName { get; private set; }
}

为此,我希望 ctor + tab 让我成为一个

public User(string UserName)
{
    this.UserName = UserName;
}

【问题讨论】:

  • 为什么要创建一个违反 .NET 命名约定的构造函数?
  • @Markus - 您是否考虑过在生成客户端中使用较新样式的对象构造函数?
  • @Garry Vass 不,我什至不知道它是什么。
  • @Markus -> 在很多情况下,它比编写重载构造函数要干净得多,请阅读:如何:使用对象初始化器初始化对象(C# 编程指南)msdn.microsoft.com/en-us/library/bb397680.aspx
  • @GarryVass:您不能将对象初始化器与具有私有设置器的属性一起使用。如果您想强制数据类的用户始终设置某些属性,除了为构造函数提供必要的参数之外别无他法。

标签: c# visual-studio-2010


【解决方案1】:

我认为您指的是代码片段。您可以编写自己的代码片段(它们是用 XML 编写的)。请参阅here 了解起点。

您还应该能够编辑现有的代码片段(例如 ctor 之一)。请参阅MSDN 了解这方面的一些方向。

注意:进一步谷歌搜索代码片段会带来更多教程和参考资料。

【讨论】:

  • 感谢代码片段,但似乎答案是否定的......不可能创建如此高级的 sn-ps。
  • 第一个链接似乎已损坏(不在 DNS 中 - 域不存在)。
【解决方案2】:

我认为你可以用 sn-p 做到这一点:

Creating and Using IntelliSense Code Snippets (MSDN)

【讨论】:

  • 不要只链接到解决方案。如果该链接失效,您的答案也会失效。
【解决方案3】:

你也可以反过来做;如果你开始没有构造函数或字段,并尝试使用不存在的构造函数,你可以按 ctrl+. 要求它为您生成一个,使用优先:

然后这个编译器会生成一些不太相似的东西:

public class User
{
    private string username;

    public User(string username)
    {
        // TODO: Complete member initialization
        this.username = username;
    }
}

如果需要,您可以手动修复此问题(可能使用内置的重命名重构等)。但不是完全你想要的。

【讨论】:

  • 嗯,我想要这样一个 sn-p 的原因是我有很多属性,如果我有的话,它会大大加快工作速度。
【解决方案4】:

感谢 Samuel Slade(告诉我它叫做 code-sn-ps),我设法找到了另一个 Stack Overflow 答案:Snippet code to create constructor in VS2010 Express

似乎答案是否定的,而不是没有插件/扩展。

很多都提到了ReSharper 扩展。

【讨论】:

    【解决方案5】:

    正如其他人所指出的,不可能创建如此智能的 sn-ps。

    有一个名为 Comet 的免费 Visual Studio 插件可以做你想做的事。

    【讨论】:

    • CodePlex 现已关闭。该链接仍然存在(“下载存档”),但如果 Comet 现在有新位置等,可能会更新它。
    【解决方案6】:

    “ctor”代码 sn-p 只创建一个空白构造函数,但不使用该构造函数中类的现有属性。

    不过,最新版本的 ReSharper 允许您选择要包含在构造函数中的字段(就像很久以前 Eclipse 所做的那样)。

    【讨论】:

      【解决方案7】:

      如果你使用ReSharper,快捷键是Alt + Insert

      Source

      【讨论】:

      • 甜,我实际上正在使用 Resharper,所以它对我有用! (但是我不会将其标记为解决方案,因为您必须拥有它,而且我知道很多人没有)
      • 对不起,我以前用过这个快捷键,但是现在我重新安装了visual studio,这个组合不起作用,之前我从来没有安装过Resharper。
      • 确保 Resharper Shortcuts 是您的 VS 中的默认设置
      【解决方案8】:

      使用ReSharper'sctorf

      这将允许您使用基于类中定义的字段生成的参数创建构造函数。

      【讨论】:

      • 我没有要测试的 VS2017,但你确定这不是 ReSharper sn-p 吗?
      • 是的。你说得对。把它留在这里是因为很高兴知道你是否有更清晰的东西。
      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2012-06-21
      • 2010-11-09
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多