【发布时间】:2021-02-07 05:03:15
【问题描述】:
我创建了一个小测试程序来获得一些使用 C# 中的 IComparable 接口的经验。我以后需要将接口用于其他东西。
在程序中,我想根据薪水对客户的 ArraList 进行排序。执行我的代码时,我总是收到“System.InvalidOperationException”异常。
我已经尝试了不同版本的代码并查看了一些教程,结果总是相同。
我的代码:
using System;
using System.Collections;
namespace CsTest
{
public class Program
{
public static void Main()
{
Customer customer1 = new Customer()
{
ID = 101,
Name = "Ted",
Salary = 4000
};
Customer customer2 = new Customer()
{
ID = 102,
Name = "Tod",
Salary = 7000
};
Customer customer3 = new Customer()
{
ID = 103,
Name = "Tom",
Salary = 5500
};
ArrayList listCustomers = new ArrayList();
listCustomers.Add(customer1);
listCustomers.Add(customer2);
listCustomers.Add(customer3);
Console.WriteLine("Customers before sorting");
foreach (Customer customer in listCustomers)
{
Console.WriteLine(customer.Name + " - " + customer.Salary);
}
// Sort() method should sort customers by salary
listCustomers.Sort();
Console.WriteLine("Customers after sorting");
foreach (Customer customer in listCustomers)
{
Console.WriteLine(customer.Name + " - " + customer.Salary);
}
}
}
public class Customer : IComparable<Customer>
{
public int ID { get; set; }
public string Name { get; set; }
public int Salary { get; set; }
public int CompareTo(Customer obj)
{
return this.Salary.CompareTo(obj.Salary);
}
}
}
【问题讨论】:
-
你从哪里得到这个异常,为什么你使用 ArrayList 而不是 List ?
标签: c# sorting arraylist icomparable