【问题标题】:Generate Constructor in Visual Studios C# doesn't work...why?在 Visual Studio C# 中生成构造函数不起作用...为什么?
【发布时间】:2017-07-28 17:23:34
【问题描述】:

我已经用 {get;set;} 设置了类的所有属性,每次我点击生成构造函数时,它都会给我这个消息:光标必须在构造函数调用上。我也找不到关于这条消息的任何信息。

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ISYAbschlussProjektJ
{
    public class Loan
    {
        public string bank { get; set; }
        public double amount { get; set; }
        public double rate { get; set; }
        public string address { get; set; }
        public string phonenumber { get; set; }
        public string email { get; set; }
        public string aktenzeichen { get; set; }
        public string iban { get; set; }
        public string bic { get; set; }
        public string betreuer { get; set; }
        public DateTime deductiondate { get; set; }
        public DateTime startdate { get; set; }


    }
}

【问题讨论】:

  • 向我们展示一些代码。你试过什么?
  • 我认为这是说你需要编写一个构造函数调用,例如new MyClass("one", 2),VS可以生成带有适当参数的构造函数。
  • 具体参数是什么?我在哪里添加这个?谢谢你:)
  • @Nino 我已经添加了代码
  • 在哪里点击Generate Constructor?你在使用 Resharper 吗?

标签: c# wpf visual-studio visual-studio-2013


【解决方案1】:

你忘记了类构造函数

public class Loan
{
    /* Empty constructor */
    public Loan() { }
}

生成包含所有参数的构造函数(使用 VS 2015):

  • 选择所有属性
  • 右键单击/“快速操作和重构”
  • 生成构造函数'Loan(string,double,double,string,string,...'

【讨论】:

  • 不,我没有编写构造函数,因为首先我希望包含所有参数并且我试图生成它但它不起作用..
【解决方案2】:

你为什么不自己写构造函数呢?构造函数必须与封闭类同名并且没有返回类型。在您的情况下,构造函数可以是

public Loan() 
{ 
}

如果需要,你可以在构造函数中传递额外的参数,像这样:

public Loan(string bankParam) 
{
    this.bank = bankParam;
}

您可以为各种场景使用一个或多个构造函数(但它们必须具有不同数量/或类型的参数)。更多解释请参考MSDN programming guide

此外,使用大写字母命名属性是一种很好的做法,例如 BankAmount˛

编辑:既然你坚持生成,你可以这样(我在VS 2015上测试,其他版本应该类似):

要生成构造函数,您必须使用构造函数。 所以,在你的代码中的某个地方(不是在Loan 类中)写你的构造函数调用的例子,像这样:

Loan l = new Loan("Erste bank", 10.0, 0.5, "Strasse 1");

然后您可以右键单击该行并选择“快速操作和重构”(或 VS 中的类似选项),或单击灯泡并选择“在贷款中生成构造函数”。那会产生你 public Loan(string s, decimal d, decimal p, string d) 或类似的东西...

不过,由于缺乏控制、奇怪的变量命名等,我不会推荐太多wizardry 和代码生成……但是,适合你自己。

【讨论】:

  • 首先我想使用快捷方式来节省时间,因为我有 12 个参数和一些需要构造函数的类......我在 MSDN 上也找不到任何东西
  • @jasminrandom 我已经编辑了我的答案并添加了额外的解释。另外,请查看 mehdi 生成具有所有属性的构造函数的答案。
猜你喜欢
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-29
  • 2018-03-05
  • 2020-11-15
相关资源
最近更新 更多