这是我的任务,我无法让我的班级与主人合作,有人可以帮助我吗?这是应该在星期二,我已经尝试过的每一种方法都在打砖墙。我的所有课程和表格都已发布。请帮助我,我完全迷失和沮丧
创建一个具有以下数据属性的Employee类:
接下来,创建一个名为ProductionWorker的类,该类派生自Employee类。
ProductionWorker类应具有保存以下数据的属性:
Shift属性将包含一个整数值,表示员工的工作班次。白班是班次1,夜班班次是班次2.
创建一个创建ProductionWorker类对象的应用程序,并允许用户为每个对象的属性输入数据。检索对象的属性并显示其值。
这是我的员工参考图表,用于存储他们的姓名和I.D号码。 我在这堂课上没有编译错误,但是我不确定我是不是 这样做是正确的,因为在我的主要内容中我得到了一个编译错误。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Employee_References
{
class Roster
{
// Field for name, ID, dept, and position
private const int NAMES = 100;
private static string [] employee = new string [NAMES];
private const int NUMBER = 100;
private static int [] id = new int [NUMBER];
private int total = 0;
public void Employee()
{
total = 0;
}
// This will recieve input from my main
public static void employeeName (string [] xArray)
{
for (int index = 0; index < xArray.Length; index++)
{
xArray[index] = employee[NAMES];
}
}
// This will recieve input from my main
public static void idNumber ( int [] zArray)
{
for (int index = 0; index < zArray.Length; index++)
{
zArray[index] = id[NUMBER];
}
}
}
}
这将是我从我的第一堂课派生的下一堂课。该类假设存储班次号码1到4,以及小时工资制定者用于白天和夜班。我在这个课程中得到一个编译错误,上面写着“作业的左侧必须是变量,属性或索引器”我不确定它是什么告诉我,有人可以解释一下它试图告诉我的是什么。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Employee_References
{
class References : Roster
{
// Field for name, ID, dept, and position
private int shift;
private static const double PAYRATEDAY = 12.75;
private static const double PAYRATENIGHT = 15.75;
public void Employee()
{
}
// This will recieve input from my main
public int shifts
{
set {shift = value;} // this set the recieve value of name one and set it to name1
get {return shift; } //this will get name1 and send it to my main.
}
// This will recieve input from my main
public double payrate1
{
set { PAYRATEDAY = value; } // ERROR!!The left-hand side of an assignment must be a variable, property or indexer
get { return PAYRATEDAY; }
}
// This will recieve input from my main
public double payrate2
{
get { return PAYRATENIGHT; } // ERROR!!The left-hand side of an assignment must be a variable, property or indexer
set { PAYRATENIGHT = value; }
}
}
这是我的Main,我正在尝试分配将在此表单中输入的输入值,并将它们传递到我的“Roster”类中,该类具有100的数组。我怎么一直得到一个编译错误说“无法分配给'employeeName',因为它是'方法组”。我不确定它能告诉我一些人可以向我解释这一点,并给我一些关于如何做到这一点的指针。
using System;
using System.Windows.Forms;
namespace Employee_References
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Roster Chart = new Roster();
Chart.employeeName = name.Text; // Error **Cannot assign to 'employeeName' because it is a 'method group**".
}
}
}
答案 0 :(得分:3)
我已经这样做了(希望这可以帮到你)
首先,我制作了员工类
public class Employee
{
public string EmployeeName { get; set; }
public int EmployeeNumber { get; set; }
}
然后我创建了继承Employee
两个属性的类ProductionWorkerpublic class ProductionWorker : Employee
{
public float HourlyPayRate { get; set; }
public Shift Shift { get; set; }
}
我制作了一个公开枚举,因此代码更具可读性
public enum Shift
{
Day,
Night
}
在main中你可以简单地创建一个ProductionWorker,然后你可以做类似的事情
ProductionWorker productionWorker = new ProductionWorker();
productionWorker.EmployeeName = "Goofy";
productionWorker.EmployeeNumber = 123;
productionWorker.HourlyPayRate = 5;
productionWorker.Shift = Shift.Day;//Or night as you want
//Then you simply print the properties like that
Console.WriteLine(productionWorker.EmployeeName);
//Etc...
编辑1
当然,您可以在Enum对象中分配所需的所有数字
public enum Shift
{
Day=50,
Night=25
}
但在这种情况下不建议使用(在其他情况下:例如,如果你想使用枚举作为标志)。它更常用于检查枚举,然后在变量中进行计算,例如
float salary = 0F;
ProductionWorker productionWorker = new ProductionWorker();
productionWorker.EmployeeName = "Goofy";
productionWorker.EmployeeNumber = 123;
productionWorker.HourlyPayRate = 5;
productionWorker.Shift = Shift.Day;//Or night as you want
if(productionWorker.Shift.Equals(Shift.Day))
salary = productionWorker.HourlyPayRate*yourCostant;
else
salary = productionWorker.HourlyPayRate*otherYourCostant;
//Then you simply print the properties like that
Console.WriteLine(productionWorker.EmployeeName);
编辑2 这是完整的枚举对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Example_Enum
{
public enum Shift
{
Day/* = 50 this is optional by default is 0*/,
Night/* = 0.12 this is optional by default is 1*/
}
}
编辑3 如果你想存储多个bioWorker,你可以做类似的事情
1)首先,all声明一个像这样的全局List
private List<ProductionWorker> pw =n ew ProductionWorker();
2)将ProductionWorker类添加到列表中(例如)
private void btn_Ok(EventArgs e, object sender)
{
//Before add the class check that all fields are complete!
pw.Add(new ProductionWorker{EmployeeName = "Goofy",EmployeeNumber = 123, HourlyPayRate = 5, Shift = Shift.Day});
}
这是一个简单的实现,如果你想做得更好,你必须检查EmployeeNumber是否已经存在。你可以用两种方式做到这一点
1)使用foreach
bool find = false;
foreach(ProductionWorker w in pw)
if(v.EmployeeNumber.Equals(EmployeeNumberInput))
{
find = true;
break;
}
2)或者你现在可以使用System.Linq
这是一种更惯用的方法
(我还建议遵循.NET命名约定。)
var temp=pw.Find(item=> item.EmployeeNumber.Equals(EmployeeNumberInput))
if(temp!=null)
//ID already exist show an error
else{
//Add a new object to list
}
答案 1 :(得分:1)
当你在树林里迷失方向时,退一步将问题分成较小的任务通常是一个好主意。
创建一个具有以下数据属性的Employee类:
- 员工姓名
- 员工编号
我从那开始。
这是一个nice example(我发现它在谷歌上搜索“c# class with properties”)如果这看起来有点令人生畏。