微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CS7036:没有给出对应于所需形式参数 'i'

如何解决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 的和尚

解决方法

如果 CarEngineer

CarEngineer 的不太可能的情况下,Car 需要提供 creatorCompany

  1. Engineer 定义声明必须提供 creatorCompany
  2. Car Engineer
  3. 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 举报,一经查实,本站将立刻删除。