【问题标题】:Can VS 2012 generate a class constructor?VS 2012 可以生成类构造函数吗?
【发布时间】:2014-10-02 19:42:53
【问题描述】:

VS 2012 专业版可以生成没有任何插件的类构造函数吗?

我不敢相信我找不到这样做的选项,如果它不能这样做,那真的是一个阴谋:)

我已经定义了我的班级:

public class User
{
   public int Id {get;set;}
   public string Name {get;set;}
}

现在是否有一个快捷方式可以生成构造函数、toString() 方法等?

【问题讨论】:

  • 自动生成?
  • Re-sharper 可以做到...但 Visual Studio 没有这样的选择。
  • @BradleyDotNET 是的,我已经更新了我的问题以澄清我在问什么。
  • @Hypenate 是的,我知道 resharper 可以做到,但是 vs.net 是如此先进,而且 $ 我很震惊它没有基本的代码生成,没有任何插件。
  • @Kritner 这些被称为 sn-ps 并且可能是这里的最佳选择。

标签: c# visual-studio


【解决方案1】:

如果你需要一个默认的构造函数,那么有一个code snippet ctor


但是如果你需要一个带参数的构造函数,那么在你的代码中写:

User user = new User(2, "Name");

这将是一个错误,因为没有带有两个参数的构造函数,但是如果您将鼠标悬停在new User 中的User 上,您会得到一个蓝色的下划线。单击它或将光标放在User 上并按Ctrl + . 它会给您一个选项来生成构造函数,例如:

这将为您提供一个具有以下字段的构造函数:

public class User
{
    private int p1;
    private string p2;

    public User(int p1, string p2)
    {
        // TODO: Complete member initialization
        this.p1 = p1;
        this.p2 = p2;
    }
    public int Id { get; set; }
    public string Name { get; set; }
}

然后你必须进去并删除p1p2并指向IdName并在构造函数中重命名参数。这可能是 only Visual Studio 能做到的最好的事情。

见:Generate From Usage - MSDN (感谢@Peter Ritchie)


考虑安装 Re-Sharper,它对于 generating not only constructor 有更好的选择,但还有其他非常有用的代码。

【讨论】:

  • @PeterRitchie,这是一个非常有用的链接。
  • 谢谢,但好像 vs.net 的设计实际上并没有编码。我不想写出那一行只是为了生成一个构造函数。当然有这个选项也很好,但是当我创建一个类时,我想生成一个完整的构造函数!
  • 考虑安装 Resharper?告诉我的老板,他必须为此支付 $xxx 哈哈。
  • @publicstatic, 没有直接关系,但显示你的老板The Programmer's Bill of Rights - Coding Horror 然后考虑换公司:P
  • @Habib 你在招聘吗? :) 我的老板可能会带我开门。
【解决方案2】:

snippets 是内置的,您可以添加自己的。 ctor 将创建构造函数,我认为 ToString 没有任何内容,尽管您可以键入 override,从列表中选择它,它会存根。

【讨论】:

    【解决方案3】:

    "ctor" sn -p 生成一个构造函数,但没有参数。要获得它们,不幸的是,您应该使用(免费或非免费)插件。这个问题已经讨论过了,比如Shortcut for creating constructor with variables (C# VS2010)

    我认为在裸露的 Visual Studio 中生成参数化构造函数没有直接的意义。

    编辑:我可能应该在我的最后一句话之后添加“......严格适用于当前在类中定义的属性和字段”。但是,是的,按照 Peter 的建议,可以生成一种参数化构造函数。

    【讨论】:

    • 另一个问题详细说明了它可能的,早在 2010 年就有记录 msdn.microsoft.com/en-us/library/dd409796(v=vs.100).aspx
    • @PeterRitchie 不同意。 “为使用而生成”并非严格意义上的“就地生成构造函数”:参数顺序和名称与类中现有的道具和字段不匹配!很高兴提及它,因为它可能会有所帮助,但此解决方案远不如 R# ctor 生成那样有效。
    • 并提到了“ctor”。 OP 向我们展示了类中存在的一些字段,所以我猜他的目标是针对它们生成一个构造函数......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2021-02-19
    相关资源
    最近更新 更多