我创建了两个构造函数但只能使用其中一个构建一个实例

时间:2015-09-04 20:27:53

标签: c# oop constructor

编辑: 我在这里与公司财产合作,这个概念对于阅读这篇文章的人来说应该是有意义的: 我有2个EFImport构造函数,一个有2个参数,另一个有3个参数。我的建议是我的构造函数有2个参数不被识别。我正在使用new关键字,并且使用具有3个参数的构造函数以完全相同的方式初始化对象,并且它完美地工作。但是没有识别带有2个参数的构造函数。同样,我不能在这里专门提出代码,但这个概念就是我所要求的。

我需要使用两个不同的构造函数,一个需要额外的参数,另一个不需要该参数。我不确定为什么我无法实际到达只有两个参数的构造函数。

我有以下构造函数:

public EFImport(string empId, Class A instanceA, IEnumerable<ClassB> instanceB)
{
     //do stuff here
}

public EFImport(string empId, Class A instanceA)
{
     //do other different stuff here
}

我试图像这样调用构造函数:

Public HttpResponseMessage Post([FromBody]string fEmp)
{
     //do stuff here
     //call constructor here:
     //NEW keyword is used here
     var fileImp = new EFImport(empId, instanceA, instanceB);
     //this works just fine
}

Public HttpResponseMessage Put([FromBody]string empImportId)
{
     //do stuff here
     //call constructor here:
     //NEW keyword used here
     var fileImp = new EFImport(empId, instanceA);
     //Here it gives me the error stated below
}

错误509'EFImport'不包含带有2个参数的构造函数

我究竟做错了什么?两个构造函数都是公共的,带有3个参数的构造函数完全正常,但编译器看不到带有2个参数的构造函数。我忽略了一些非常简单的事情吗?

2 个答案:

答案 0 :(得分:0)

var obj = new EFImport(empId, instanceA);

var obj = new EFImport(empId, instanceA, instanceB);

应该有用。

答案 1 :(得分:0)

我似乎不知道你在做什么:

var EFImport(empId, instanceA)

此代码存在一些问题:

  • 您正在错误地实例化对象。在C#中,如果要创建新对象,可以使用:

    TypeOfVar nameOfVar = new TypeOfVar();
    

    var nameOfVar = new TypeOfVar();
    

    有关如何在C#中使用构造函数的更多信息,请访问:https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx

  • 您似乎也错过了分号;)