如何解决CS7036:没有给出对应于所需形式参数 'i'
我刚学C#,用构造函数做了两个外部类,一个继承自另一个。但它给出了错误: 严重性代码描述项目文件行抑制状态 错误 CS7036 没有给出对应于“Engineer.Engineer(string)” program.cs C:\Users\win 10\Desktop\C#\program.cs\program.cs\Car 的所需形式参数“i”的参数.cs 41 活跃 三个代码文件是: 1/ main.cs:
using System;
namespace program
{
class Core
{
static void Main(string[] args)
{
Car BMW = new Car("X-A-21-A-X",3200000,"Reddish-brown",false);
string currentPrice = BMW.CheckPrice("us",BMW.price);
if(!double.TryParse(currentPrice,out var q))
{
Console.WriteLine(currentPrice);
}else if(double.TryParse(currentPrice,out var z))
{
double converted_Price = Convert.Todouble(currentPrice);
Console.WriteLine(converted_Price);
}
Console.WriteLine(BMW.model);
}
}
}
2/ Car.cs:
using System;
namespace program
{
class Car : Engineer
{
private string _model;
public string model
{
get { return _model; }
set { _model = value; }
}
public double price;
public string color;
public bool available;
public string CheckPrice(string locale,double price)
{
string ret = default(string);
if(locale == "in")// India
{
ret = Convert.ToString(2.14 * price);
}else if(locale == "us")// USA
{
ret = Convert.ToString(3.98 * price);
}else if(locale == "jp")// Japan
{
ret = Convert.ToString(1.3 * price);
}else if(locale == "vn")//Vietnam
{
ret = Convert.ToString(0.78645 * price);
}else if(locale == "ch")//China
{
ret = Convert.ToString(2.56 * price);
}
else
{
ret = "Invalid Locale,Your Country does not ship the car.";
}
Console.WriteLine(_model);
return ret;
}
public Car(string modelName,double priceVal,string ColorName,bool avail) /* 'Car' in this line is causing problems*/
{
model = modelName;
price = priceVal;
color = ColorName;
available = avail;
}
}
}
3/ Engineer.cs:
using System;
namespace program
{
class Engineer
{
private string creatorCompany;
public string creator_Company
{
get { return creatorCompany; }
set { creatorCompany = value; }
}
public Engineer(string i)
{
creator_Company = i;
}
}
}
那里有答案,但我无法理解。请向我解释它们,就像我是一个不知道 sh*t 的和尚
解决方法
如果 Car
是 Engineer
在 Car
为 Engineer
的不太可能的情况下,Car
需要提供 creatorCompany
:
-
Engineer
定义声明必须提供creatorCompany
-
Car
是Engineer
-
Car
必须提供creatorCompany
。
它可能看起来像这样:
public Car(
string creatorCompany,// Added
string modelName,double priceVal,string ColorName,bool avail)
: base(i: creatorCompany) // Added
{
model = modelName;
price = priceVal;
color = ColorName;
available = avail;
}
如果 Car
不是 Engineer
在这种情况下,解决方案是删除: Engineer
:
class Car : Engineer
变成:
class Car
,
您需要将默认构造函数添加到 Engineer
类。因为当你创建一个派生的实例时,它会在派生类构造函数之前调用基类构造函数。
public Engineer()
{
}
,
我找到了答案,我只需要将engineer
的构造函数类添加到car
。我从 Engineer 文件中删除了构造函数,并在“Car”的构造函数中添加了另一个参数并将其设置在那里。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。