Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# - Fatal编程技术网

C# 如何初始化基类';当我通过一个派生类的构造函数实例化它时,它的属性是什么?

C# 如何初始化基类';当我通过一个派生类的构造函数实例化它时,它的属性是什么?,c#,C#,我必须创建两个类。基类是Employee,它需要两个受保护的字段。字符串名称和整数数字。然后,我必须创建一个名为ProductionWorker的派生类,该类有4个属性。前两个是从基类继承的两个属性。接下来的两个是doublePayRate和intShiftNum。用户在表单上输入此数据。单击show按钮后,需要将这4个数据点初始化为ProductionWorker对象的属性。然后使用该对象,我必须将该数据显示为字符串 我已经读过:派生类的构造函数之后的base。但我仍然无法初始化Product

我必须创建两个类。基类是
Employee
,它需要两个受保护的字段。字符串
名称
和整数
数字
。然后,我必须创建一个名为
ProductionWorker
的派生类,该类有4个属性。前两个是从基类继承的两个属性。接下来的两个是double
PayRate
和int
ShiftNum
。用户在表单上输入此数据。单击show按钮后,需要将这4个数据点初始化为ProductionWorker对象的属性。然后使用该对象,我必须将该数据显示为字符串

我已经读过:派生类的构造函数之后的base。但我仍然无法初始化ProductionWorker,因为它不包含全部4个参数

namespace Employee_Form
{
    class Employee
    {
        protected string Name { get; set; }
        protected int Number { get; set; }

        public Employee(string name, int number)
        {
            this.Name = name;
            this.Number = number;
        }
    }
}

名称空间雇员表格 { 类生产工人:雇员 { 受保护的静态新字符串名称{get;set;} 受保护的静态新整数{get;set;} 受保护的int-ShiftNum{get;set;} 受保护的双重付款率{get;set;}

    public ProductionWorker(int shiftNum, double payRate) : base (Name, Number)
    {
        this.ShiftNum = shiftNum;
        this.PayRate = payRate;
    }

    public string showData()
    {
       
    }
}
}


您的子类必须在构造函数中包含所有4个参数。即:

public ProductionWorker(string name, int number, int shiftNum, double payRate) : base (name, number)
另一种方法是没有明确的讲师,并使用初始值设定项的语法。即:

ProductionWorker worker = new ProductionWorker(textBox1.Text, textBox2.Text)
{
    ShiftNum = Convert.ToInt32(textBox3.Text),
    PayRate = Convert.ToDouble(textBox4.Text)
};
^要使其正常工作,您需要再次从子类中删除显式构造函数。

“我仍然无法初始化ProductionWorker,因为它不包含全部4个参数?”--只是因为您没有提供它们。所以请提供它们。有关调用基本构造函数的所有详细信息,请参阅duplicate。当然,代码的另一个大问题是,您重新声明了基本属性
Name
Number
,使用
new
隐藏它们。不要这样做。
ProductionWorker worker = new ProductionWorker(textBox1.Text, textBox2.Text)
{
    ShiftNum = Convert.ToInt32(textBox3.Text),
    PayRate = Convert.ToDouble(textBox4.Text)
};