我有
list<Employee> EmployeeList = new list<Employee>();
我希望能够输出创建的对象。我有不同类型的员工。在这个例子中,我使用了类管理器。在一些用户输入之后,我用
结束该选项Employee newEmployee = new Employee(name, address);
newEmployee = new Manager(name, address, salary, bonus);
EmployeeList.Add(newEmployee);
如果我尝试console.writeline(EmployeeList)
的任何内容
我只是得到命名空间。(类的类型)所以在这种情况下,mynamespace.Manager
我熟悉列表,但不熟悉使用Classes作为键/参数。
编辑: 代码并不完美,但总体目标是将Employees添加到列表中并按名称顺序显示它们。
class Program
{
static void Main(string[] args)
{
List<Employee> EmployeeList = new List<Employee>();
bool loop = true;
while (loop)
{
Console.Clear();
Console.WriteLine("Main Menu");
Console.WriteLine("1. Add Employee");
Console.WriteLine("2. Remove Employee");
Console.WriteLine("3. Display Payroll");
Console.WriteLine("4. Exit");
Console.Write("Selection: ");
string input = Console.ReadLine().ToLower();
switch (input)
{
case "1":
case "add employee":
{
Console.WriteLine("Add Employee");
Console.WriteLine("1. Full Time");
Console.WriteLine("2. Part Time");
Console.WriteLine("3. Contractor");
Console.WriteLine("4. Salaried");
Console.WriteLine("5. Manager");
Console.WriteLine("6. Previous Menu");
Console.Write("Selection: ");
string choice = Console.ReadLine().ToLower();
if (choice.Contains("1") || choice.Contains("full time"))
{
Console.Write("\nEmployee Name: ");
string name = Console.ReadLine();
while (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Must not be blank");
name = Console.ReadLine();
}
Console.Write("Employee Address: ");
string address = Console.ReadLine();
while (string.IsNullOrWhiteSpace(address))
{
Console.WriteLine("Must not be blank");
address = Console.ReadLine();
}
Console.Write("Employee Pay per Hour: ");
string pph = Console.ReadLine();
decimal payPerHour;
while (!decimal.TryParse(pph, out payPerHour))
{
Console.WriteLine("Must be a decimal");
pph = Console.ReadLine();
}
Employee newEmployee = new Employee(name, address);
newEmployee = new FullTime(name, address, payPerHour);
EmployeeList.Add(newEmployee);
员工类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TrevorMolano_Project_CE07
{
class Employee : IComparable<Employee>
{
string name;
string address;
public int CompareTo(Employee obj)
{
Employee person = obj;
return string.Compare(name, obj.name);
}
public virtual decimal CalculatePay(decimal _hpw, decimal _pph, decimal _nbb)
{
decimal hpw = _hpw;
decimal pph = _pph;
decimal answer;
answer = hpw * pph * 52;
return answer;
}
public Employee(string _name, string _address)
{
name = _name;
address = _address;
}
}
}
答案 0 :(得分:2)
是的,因为直接调用Console.Writeline()
会调用默认的ToString()
方法来执行您所观察到的操作。你需要做的是循环遍历列表并显示其中的每个对象,如
foreach(var item in EmployeeList)
{
console.writeline(item.name +"\t"+item.address);
}
此外,您的EmployeeList
集合的类型为Employee
,如下所示
list<Employee> EmployeeList = new list<Employee>();
如果Manager
类型为Employee
Employee newEmployee = new Employee(name, address);
newEmployee = new Manager(name, address, salary, bonus);
EmployeeList.Add(newEmployee);
答案 1 :(得分:0)
如果在类中重写ToString()方法,则可以使用
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['<10 decedaţi', 19],
['între 10 şi 100 decedaţi', 6],
['între 100 şi 1000 decedaţi', 6],
['peste 1000 decedaţi', 3]
]);
var options = {
title: 'DECEDAȚI ÎN NEPAL',
is3D: true,
colors:['green','#E8CF00','orange','red'],
backgroundColor: '#FAFAFA',
titleTextStyle: {
fontSize: 22,
bold: true,
}
};
var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
chart.draw(data, options);
}
类:
Console.WriteLine(string.Join(Environment.NewLine, EmployeeList));
如果您不想覆盖ToString(),可以使用Linq选择所需的数据:
public class Employee
{
public string Name { get; set; }
// ...
public override string ToString()
{
return string.Format("Employee: {0}", Name);
}
}
public class Manager : Employee
{
public override string ToString()
{
return string.Format("Manager: {0}", Name);
}
}