C# — Kendi Oluşturduğumuz Sınıfları Nasıl Sıralarız?

Ramazan Akkoyun
2 min readJan 2, 2022

--

Bu yazımda C# programlama dilinde custom type olarak oluşturduğumuz sınıflarımızı karşılaştırıp ardından nasıl sıralama yapabileceğimizi göstermeye çalışacağım.

C#’ta integer bir diziyi Array.Sort metodu ile küçükten büyüğe veya büyükten küçüğe gibi farklı senaryolara uygun olacak şekilde sıralayabiliyoruz. Peki bunu kendi yarattığımız sınıflarda nasıl yapacağız? İşte burada C# bize built-in olarak harika bir interface kullanım olanağı sunuyor: IComparable.

Örnek üzerinden anlatacak olursam, diyelim ki Employee isminde bir sınıf yaratmış olalım. Bu sınıfın id, name, department, title, employeDate gibi field ve bunlara tanımlı property’leri olduğunu varsayalım. Öncelikle ilk yapmamız gereken bu sınıfın IComparable interface’ini implement etmesi için :IComparable olacak şekilde sınıfı düzenliyoruz.

public class Employee: IComparable

Employee sınıfı için constuctor’ımız ise aşağıdaki gibi olacak.

public Employee(int id, string name, string department, string title, DateTime employeeDate)
{
this.id = id;
this.name = name;
this.department = department;
this.title = title;
this.employeeDate = employeeDate;
}

İlgili sınıfımıza IComparable eklediğimiz durumda kullanmış olduğumuz IDE bizi interface’in metotlarını implemente etmediğimiz için uyaracaktır. Burada yapmamız gereken IntelliSense yardımı ile auto-generated şekilde kullanmış olduğumuz IComparable interface’inin zorunlu tuttuğu metotları implemente etmektir.

public int CompareTo(object obj)

Karşılaştırma yapabilmemiz için implemente etmemiz gereken tek metot var: CompareTo. Bu metot yardımıyla oluşturduğumuz custom sınıf için sıralama yaparken nasıl bir business işleteceğimizi belirtiyoruz ve .Sort yaptığımız anda sınıfımızın nasıl sıralanacağını kodumuza yazıyoruz.

public int CompareTo(object obj)
{
Employee anotherObject = (Employee) obj;

if (id > anotherObject.id)
return 1;
if (id < anotherObject.id)
return -1;
return 0;
}

Ben örneğimde id üzerinden karşılaştırma ve sıralama yapmayı uygun gördüm. Bunu kendi class’ınızda hangi alanı uygun görüyorsanız ona uygun olacak şekilde değiştirebilirsiniz. Örneğimizde eğer id büyükse 1, küçükse -1 veya eşitse 0 olacak şekilde karşılaştırma durumunda olabilecek 3 senaryo için kodumuzu düzenliyoruz.

var e1 = new Employee(3, "Ali", "Cards", "Senior", new DateTime(2021, 4, 1));

var e2 = new Employee(1, "Mehmet", "POS", "Senior", new DateTime(2016, 9, 1));

var e3 = new Employee(5, "Asli", "Mobil", "Middle", new DateTime(2018, 4, 1));

var e4 = new Employee(4, "Kartal", "Internet", "Junior", new DateTime(2021, 9, 1));

Başka bir sınıfta Employee sınıfımıza ait 4 tane instance oluşturduğumuzu düşünelim ve bunları bir listeye yukarıdaki sırada ekleyelim.

List<Employee> employeeList = new List<Employee>
{
e1,
e2,
e3,
e4
};

Ardından aşağıdaki gibi Sort ettiğimizde id değerine göre küçükten büyüğe sıralanmasını bekliyoruz.

employeeList.Sort();

Sıralama sonrası listemizi yazdırdığımızda beklediğimiz gibi id değerine göre ilgili employee instance’ları sıralanmış şekilde ekrana yazdırıldı.

foreach (var employee in employeeList)
{
Console.WriteLine($"Id {employee.Id} Name {employee.Name}");
}

Bu yazımda IComparable built-in interface yardımıyla oluşturduğumuz custom class’larımızı nasıl sıralayabileceğimizi anlatmaya çalıştım. İleride kendime not olarak yazdığım bu yazılar umarım bir gün başka birisine daha yardımcı olur.

Diğer yazılarımda görüşmek üzere…

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Ramazan Akkoyun
Ramazan Akkoyun

Written by Ramazan Akkoyun

Solution Architect 💻 lives in Amsterdam 🇱🇺

No responses yet

Write a response