摘要:(200-07-02) C#.NET 陣列 排序
基本類別 實作IComparable<Employee> 泛形介面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace csmod03
{
//實作介面
public class Employee:IComparable<Employee>
{
//Data Field
private String _id;
public String Id
{
get { return _id; }
set { _id = value; }
}
private String _name;
public String Name
{
get { return _name; }
set { _name = value; }
}
private Decimal _salary;
public Decimal Salary
{
get { return _salary; }
set {
if (value > 0)
{
_salary = value;
}
}
}
//建構子
public Employee() { }
//OverLoading
public Employee(String _id, String _name, Decimal _salary)
{
this._id = _id;
this._name = _name;
if (_salary > 0)
{
this._salary = _salary;
}
}
//解構子
~Employee()
{
}
#region IComparable<Employee> 成員
public int CompareTo(Employee other)
{
//定義比對值
Int32 r = 0; //相等
if (this._salary > other._salary)
{
r = -1; //往前排
}
if (this._salary < other._salary)
{
r = 1; //往後
}
return r;
}
#endregion
}
}
主程式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//員工陣列初始化
namespace csmod03
{
class TesetEmployeeInitializer
{
public static void Main()
{
//定義區域變數
Employee[] emps = new Employee[] {
new Employee("0001","eric",10000),
//使用物件初始化
new Employee(){ Id="0002", Name="linda", Salary=50000},
new Employee("0003","sam",30000)};
System.Console.WriteLine(emps.Length);
//輸出
foreach (Employee e in emps)
{
System.Console.WriteLine(e.Salary);
}
//重新排序
Array.Sort(emps);
foreach (Employee e in emps)
{
System.Console.WriteLine(e.Salary);
}
}
}
}