Bir sınıfa (class) bir metot eklemek için genellikle mevcut sınıfın alt sınıfını (sub class) oluşturur ve metodu türetilmiş sınıfa ekleriz.
C#, varolan bir tipe (veya sınıfa) kalıtım kullanmaya gerek kalmadan yeni metotlar eklemenize izin veren, extension metotlar adı verilen yeni bir özelliği C# 3.0 ile birlikte kullanıma sundu.
Kısacası C# extension metotları, varolan bir tipi kalıtım almadan genişletmenize olanak tanıyan yapılardır.
Bir extension metot, static bir metotdur, ancak genişletilmiş tipte (extended type) bir instance gibi çağrılır.
C# Extension Metot Oluşturma
Bir extension metot oluşturmak için, extension metodu içeren static bir sınıf tanımlarız. Örneğin, string tipinde bir extension metot oluşturalım.
public static class StringExtension
{
public static string ToTitle(this string str)
{
return str.ToUpper();
}
}
- İlk olarak StringExtension adlı static bir class tanımladık.
- İkinci olarak ToTitle adlı static geriye string döndüren bir metot tanımladık. Burada önemli olan nokta bu metoda atama yaptığımız parametredir. “this” anahtar kelimesiyle oluşturduğumuz parametre string tipinde değer alma dışında bir görevi daha vardır. “this” anahtar sözcüğü ile birlikte extension metodun işleyeceği tipi de belirtmekteyiz.
C# Extension Metot Uygulama
Aşağıdaki örnek, bir string değişkeninde ToTitle() e xtension metodun nasıl çağrılacağını gösterir:
Extension metodun this anahtar kelimesiyle tanımladığımız ilk parametresi metodumuzun uygulanabileceği tipi belirttiğinden string tipinde ki değerlerde oluşturduğumuz extension metodumuz kullanabiliriz.
Extension metotları, visual studio’nun intellisense’ında özel bir sembole sahiptir, böylece sınıf metotlar ile extension metotları kolayca ayırt edebiliriz.
private static void Main(string[] args)
{
string message = "C# extension metot";
Console.WriteLine(message.ToTitle());
}
Sonuç: C# EXTENSİON METOT
C# Extension Metot Kullanımı Örneği 2
Aşağıdaki örnek, IsEven() ve IsOdd() adlı iki metodu ekleyerek int tipini genişletmek için extension metotlarının nasıl kullanılacağını gösterir:
static class IntExtensions
{
public static bool IsEven(this int value)
{
return value % 2 == 0;
}
public static bool IsOdd(this int value)
{
return !IsEven(value);
}
}
class Program
{
public static void Main(string[] args)
{
int[] numbers = { 3, 5, 6, 2, 7, 8 };
foreach (var number in numbers)
{
if (number.IsEven())
{
Console.WriteLine(number);
}
}
}
}
Sonuç:
6
2
8
Bu örnekte, sayı çiftse IsEven() metodu true, aksi halde false döndürür. IsOdd() metodu ise IsEven() metodunun tersidir.
Program sınıfının Main() metodunda, bir tamsayı listesi tanımlarız, bir foreach kullanarak öğeleri üzerinde dolaşırız ve çift sayıyı konsol ekranına yazarız. Bir sayının çift olup olmadığını kontrol etmek için IsEven() extension metodunu kullanırız.
C# Extension Metotların Avantajları
- NET sınıfları gibi kontrol edemediğiniz tipleri alt sınıflara ayırmaya gerek kalmadan işlevsellik eklemenize izin verir.
- İlgili metotları tek bir yerde tutarak kodunuzu daha temiz ve daha okunaklı hale getirin.
One comment
Comments are closed.