基本的控制台界面应用程序,允许用户根据以下类添加/搜索信息:
College.cs (Program.cs)
Person.cs
Student.cs
Staff.cs
Lecturer.cs
Staff
和Student
都继承了Person
第一步是为Person
定义属性,构造函数,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudentApp
{
class Person
{
//Auto-implemented properties
public int PpsnNo { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
//Constructors
public Person() { }
public Person(int ppsn, string first, string last, string address, string phone, string email)
{
PpsnNo = ppsn;
FirstName = first;
LastName = last;
Address = address;
Phone = phone;
Email = email;
}
//Method
public override string ToString()
{
}
}
}
接下来,我已经开始在Student
类中创建一个List,如下所示(我知道有不必要的/冗余的方法,它实际上只是存储列表的位置的问题):
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ICollection_Example
{
class Student :ICollection<Person>
{
//property
private List<Person> StudentList;
//Constructor
public Person()
{
StudentList = new List<Person>();
}
#region interface Properties
public int Count { get; }
public bool IsReadOnly
{
get { return false; }
}
#endregion
#region Interface Methods
public void Add(Person book)
{
StudentList.Add(book);
}
public void Clear()
{
StudentList.Clear();
}
public bool Contains(Person book)
{
return StudentList.Contains(book);
}
public bool Remove(Book book)
{
return StudentList.Remove(book);
}
public void CopyTo(Person[] array, int index)
{
StudentList.CopyTo(array, index);
}
public IEnumerator<Person> GetEnumerator()
{
return StudentList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return StudentList.GetEnumerator();
}
#endregion
#region Student Methods
public bool Remove(string ppsno)
{
bool flag = false;
for(int i = 0; i < StudentList.Count && flag==false; i++)
{
if(StudentList[i].Ppsno == ppsno)
{
StudentList.Remove(StudentList[i]);
flag = true;
}
}
return flag;
}
#endregion
}
}
是否有必要为Staff
类再次创建这样的列表,或者创建单个列表以存储在其他地方(可能在Person
中)更有意义,然后在继承另一个类的类&#39;功能 - 在这种情况下,Student
和Staff
会引用Person
中存储的列表吗?
答案 0 :(得分:3)
我认为您正在混淆个人Student
或Staff
的责任,即Person
扩展College
并添加特定于角色的功能,{{1} (基于您的类列表),用于容纳各种人员和设施,并为他们提供交互的方式。我建议让Student
直接从Person
继承,让College
类有多个集合,每个类型一个。如果您想要一个学院所有人的列表,您可以向返回College
的{{1}}类添加一个方法,并连接IEnumerable<Person>
,Students
的集合,等