namespace ComparableDemo;
// Employee has Bonus
class Employee : IComparable
{
private int _Age;
// initialize data using CTOR
public Employee(int id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
// to get data, we need properties
public int Id { get; } // read-only, Id cannot be updated
public string? Name { get; set; } // read-write, name can be updated
public int Age // read-write, age can be updated
{
get { return _Age; }
set
{
if (value < 18)
{
throw new ArgumentException("Age must be above 18");
}
else
{
_Age = value;
}
}
}
public int CompareTo(object? obj)
{
if (obj is Employee emp)
{
if (this.Age > emp.Age)
{
return 1;
}
else if(this.Age < emp.Age)
{
return -1;
}
else
{
return 0;
}
}
else
{
throw new Exception("Invalid Data");
}
}
}
using ComparableDemo;
// array of employees sorted by age
Employee[] employees = new Employee[5];
employees[0] = new Employee(1001,"Bhim",35);
employees[1] = new Employee(1002,"Ajay",25);
employees[2] = new Employee(1003,"Vijay",43);
employees[3] = new Employee(1004,"Rakesh",27);
employees[4] = new Employee(1005,"Mohan",22);
Console.WriteLine("original array ==>");
foreach (var emp in employees)
{
Console.WriteLine($"Id {emp.Id}, Name {emp.Name}, Age {emp.Age}");
}
Array.Sort(employees);
Console.WriteLine("\nsorted by Age ==>");
foreach (var emp in employees)
{
Console.WriteLine($"Age {emp.Age}, Id {emp.Id}, Name {emp.Name}");
}
C# Simple Example of IComparable Part-3
No comments:
Post a Comment