Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何修复错误;没有给出与所需形式参数';名称'&引用;_C#_Winforms_Class_Constructor - Fatal编程技术网

C# 我如何修复错误;没有给出与所需形式参数';名称'&引用;

C# 我如何修复错误;没有给出与所需形式参数';名称'&引用;,c#,winforms,class,constructor,C#,Winforms,Class,Constructor,我有一个从另一个类(EmployeeClass)继承值的类EngineerClass 我希望Windows窗体使用另一个类中的值,并将它们显示在文本框中。当试图在表单类中调用EngineerClass时,我遇到了标题中提到的错误 class EngineerClass : EmployeeClass { private int trafficHours; public int TrafficHours { set { trafficHours =

我有一个从另一个类(EmployeeClass)继承值的类EngineerClass

我希望Windows窗体使用另一个类中的值,并将它们显示在文本框中。当试图在表单类中调用EngineerClass时,我遇到了标题中提到的错误

class EngineerClass : EmployeeClass
{    
    private int trafficHours;

    public int TrafficHours
    {
        set { trafficHours = value; }
        get { return trafficHours; }
    }

    public EngineerClass(String name, int id, int pay, int wh) : base(name, id, pay, wh)
    {
        trafficHours = 0;
    }

    public void addTrafficHours(int tH)
    {
        trafficHours = tH;
        workedHours += trafficHours;
    }
}


要成为一名工程师,你需要四样东西:

public EngineerClass(String name, int id, int pay, int wh) 
“name”、“id”等都是形式参数。它们是必需的

您没有提供任何东西:

private EngineerClass Class = new EngineerClass();
您提供的与形式相对应的内容称为参数

您没有提供的内容之一是与名称相对应的参数,因此出现错误:“没有给定与所需的形式参数‘name’相对应的参数”

我怎么修理它

或者

  • 提供所需形式参数的参数,或
  • 使其成为可选的形式参数,或
  • 创建第二个构造函数,该构造函数不接受任何形式参数

请记住,无论您做什么,您的派生类都必须满足其基类构造函数的要求。

公共EngineerClass(字符串名称、int-id、int-pay、int-wh)
您的
新EngineerClass()
代码必须包含所有这四个参数。如果您不想这样做,您需要向
EngineerClass
添加一个无参数构造函数。当我们查看您的代码时:不要根据程序中的内容命名。这应该是
class Employee
而不是
class EmployeeClass
。制造化合物时不要使用缩写:
fmrEngineer
应为
EngineerForm
。当您遵循标准约定时,您的代码将更易于阅读、理解和调试。此外,任何时候您看到一个名为
int
的字段,其名称表示时间段,如
Hours
,都可能出了问题。为什么是
int
而不是合适的类型,例如
TimeSpan
private EngineerClass Class = new EngineerClass();