如何创建一种方法来对不同客户类型的一维数组进行分类


public void sortByType(){}  

如果我有三种类型的客户支付的方式
我应该输入什么我有一个班级客户继承了其他3个课程,他们有名称,ID,余额和书籍数组的名称,以及遭受折衷日期和返回的日期 类型??

class Book
{
    public string BName { get;set; }
    public string Day { get;set; }
    public string Month { get;set;} }
    public string Year { get;set;} }
    public override string ToString(){}
}

然后我创建了一个抽象类Customer

abstract class Customer
{
    protected string name;
    protected double balance;
    protected double ID_num;
    protected Book[] rental_books = new Book[3];
    public string Name { get { return name; } set { name = value; } }
    public double Balance { get { return balance; }  set { balance = value; } }
    public double ID_NUM { get { return ID_num; } set { ID_num = value; } }
    public override string ToString() {}
    public abstract void BarrowBook(string bn, string d, string m, string y);
    public abstract void ReturnBook(string bn, string d, string m, string y); 
    public abstract void AddToBalance(double sum); 
}

并将其吸入其他三个孩子课程,并将我需要的内容添加到每个方法

class NormalCustomer : Customer{}
class MemberCustomer : Customer{}
class StudentCustomer : Customer{}

然后我创建了一个库类

class Library
{
    private Customer[] customers;
    private int MaxCust=0;
    private int count = 0;
    public Library(int MaxCust) { this.MaxCust = MaxCust; }  
    public void Add(Customer c) { customers[count++] = c; }
    public void ToString() {
    public void SortByBalance()
    {
        double hold;
        for (int i = 0; i < customers.Length - 1; i++)
            for (int k = 0; k < (customers.Length - 1) - i; k++)
            {
                if (customers[k].Balance > customers[k + 1].Balance)
                {
                    hold = customers[k].Balance;
                    customers[k].Balance = customers[k + 1].Balance;
                    customers[k + 1].Balance = hold; 
                }
            }
    }
}

所以我现在需要的只是我上面提到的methode以及如何创建

让我们上课

public class Customer { ... }
public class NormalCustomer : Customer{}
public class MemberCustomer : Customer{}
public class StudentCustomer : Customer{}

提供一个包含混合顺序的所有孩子的数组:

Customer [] array = new Customer[]
{
    new StudentCustomer(),
    new MemberCustomer(),
    new NormalCustomer(),
    new MemberCustomer(),
    new StudentCustomer(),
    new StudentCustomer(),
    new NormalCustomer(),       
};

您可以使用该方法:oftype提取单个类型:

var children_1 = array.OfType<NormalCustomer>();
var children_2 = array.OfType<MemberCustomer>();
var children_3 = array.OfType<StudentCustomer>();

现在,您只需要使用Concat方法将它们加入到单个集合中。它预计第二个集合包含相同类型的元素,因此您需要将其临时施放给父类型:

Customer [] sorted children_1.Cast<Customer>().Concat(children_2).Concat(children_3).ToArray();

最新更新