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