C# Ekleme (extension) Metotları


25 Ağustos 2012     Etiketler: C#

C# ile "bizim olmayan sınıflara" bile metot eklememizi sağlayan ekleme metotlarına genel bir bakış yapalım


Uygulamalarımızda verilen nümerik bir tam sayının asal sayı olup olmadığını tespit etmek için yazılabilecek aşağıdaki metodu ele alalım.

public bool Asalmı(int tamSayı) {
if (
tamSayı <= 1) return false;

for (int i = 2; i <
tamSayı; i++) {
if (
tamSayı % i == 0 && i != tamSayı) return false;
}
return true;
}

Doğal olarak bu metodun kullanımı da aşağıdaki şekilde olacaktır.

int sayı = 7;
bool asalmı = Asalmı(sayı);

Peki bu metodu sayı.Asalmı() şeklinde çağırmak daha zarif olmaz mıydı? İşte bu ekleme metotlar ile mümkün. Yukarıdaki metodu bir ekleme metoduna dönüştürelim şimdi:

public static bool Asalmı(this int tamSayı) {
if (
tamSayı <= 1) return false;

for (int i = 2; i <
tamSayı; i++) {
if (
tamSayı % i == 0 && i != tamSayı) return false;
}
return true;
}
Ve bu ekleme metodunu statik bir sınıf içine alalım (bu ekleme metotlar için bir gereklilik).

public static class EklemeMetotlar
{
public static bool Asalmı(this int
tamSayı)
{
if (
tamSayı<= 1) return false;

for (int i = 2; i <
tamSayı; i++)
{
if (
tamSayı % i == 0 && i != tamSayı) return false;
}
return true;
}
}

Şimdi ekleme metodumuzu aşağıdaki gibi kullanabiliriz. Tabii ki (EklemeMetotlar) sınıfı kapsam içindeyse...

int sayı = 7;
bool asalmı =
sayı.Asalmı();
Şimdi parametreli ekleme metotlara bir örnek oluşturalım. Bunun için de aşağıdaki metodu ele alalım.

bool ModülerEşit(int sayı1, int mod, int sayı2)
{
return sayı1 % mod == sayı2 % mod;
}

Bu metodu aşağıdaki gibi kullanabiliriz.

var sonuç = ModülerEşit(6, 3, 9); //true döndürecektir.
var sonuç = ModülerEşit(7, 3, 9); //false döndürecektir.

Şimdi bu metodu ekleme metodu olarak yazalım.

public static bool ModülerEşit(this int sayı1, int mod, int sayı2)
{
return sayı1 % mod == sayı2 % mod;
}


Şimdi ekleme metodunu asağıdaki gibi kullanabiliriz:

int sayı1 = 6;
var sonuç = sayı1.ModülerEşit(3, 9);


.NET Framework 3.5 aracılığıyla tanıştığımız, daha az ve daha düzenli kodlamaya imkan sağlayan ekleme metotları faydalı ve Framework içinde LINQ ve Entity Framework gibi bir çok alanda sıklıkla kullanılmakta. Programcıları olarak aktif olarak kullanılmasa bile bilinmesi mutlak suretle gereklidir.




Yorumlar


Bu makaleye ait yorum bulunamadı.

Sizin yorumunuz

Email


Adınız







F5 Dergi © 2017