11 Şubat 2018 Pazar

C# Kısmi Tipler ve Kısmi Metotlar (Partial Class, Partial Methods)


Merhaba,

Bu yazıda, kısmi tiplerden bahsedeceğim.

Büyük boyutlu programlarda bazen aynı amaçlar için kullanılan çok uzun olabilecek cs dosyalarını bölmek mümkündür. Böylece takibi daha da kolaylaştırmış oluruz. 100'lerce satır arasında kaybolmaktansa bazen birbiriyle bağlantılı 3-5 metot için ayrı cs dosyaları oluşturmamız mümkün olabilir.

Kısmi tipleri belirtmek için partial anahtar sözcüğünü kullanacağız.

Öncelikle 3 ayrı dosyayı ayrı ayrı cs dosyası olarak kaydedelim.


--Bunu PartialClassX.cs olarak kaydedin
partial class PartialClassXY { public int X { get; set; } }


--Bunu PartialClassY.cs olarak kaydedin
partial class PartialClassXY { public int Y { get; set; } 
}

--Bunu PartialClassXY.cs olarak kaydedin
using System; partial class PartialClassXY { public PartialClassXY(int x, int y) { this.X = x; this.Y = y; } static void Main() { PartialClassXY xy = new PartialClassXY(10, 20); Console.WriteLine("X: " + xy.X + " Y: " + xy.Y); } 
}

Programı çalıştırdığınızda aşağıdaki çıktıyı alacaksınız:

X: 10 Y: 20

Örnekte görüldüğü gibi, aynı namespace içinde olmak kaydıyla herhangi bir yerde partial class anahtar sözcüğü ile ortak bir sınıf oluşturmamız mümkündür. Dikkat edildiğinde PartialClassXY.cs dosyasında this.X ve this.Y elemanlarına (PartialClassXY.cs'de tanımlı olmadığı halde) sınıfın elemanlarıymış gibi erişebiliyoruz. Sonuç olarak partial class sayesinde PartialClassX.cs, PartialClassY.cs ve PartialClassXY.cs dosyalarını tek bir çatı altında toplamış olduk.

Kısmi tipler tanımlanabildiği gibi Kısmi Metotlar da tanımlanabilir. Aşağıdaki örnek kısmi metotlara örnektir.
using System; partial class PartialClassXY { public int X { get; set; } partial void Show() { Console.WriteLine("X: " + X + " Y: " + Y); } } partial class PartialClassXY { public int Y { get; set; } public void ShowXY() { Show(); } } partial class PartialClassXY { public PartialClassXY(int x, int y) { this.X = x; this.Y = y; } partial void Show(); } class Test { static void Main() { PartialClassXY xy = new PartialClassXY(10, 20); xy.ShowXY(); Console.Read(); } 
}

Kısmi metodun tanım şekline dikkat ediniz: partial void Show(); 

Diğer parçada ise bu metodun içi doldurulmuştur.
partial void Show() { Console.WriteLine("X: " + X + " Y: " + Y); 
}

Artık bu metot diğer parçalarda çağrılırsa çalışacaktır. Diğer parçada ise bu metot çağrılmıştır.
public void ShowXY() { Show(); 
}

Diyelim ki Show() metodunu derlemeye dahil etmezsek ShowXY() boş çalışacaktır. Kısmi metodun asıl faydası da burda yatmaktadır.

Umarım faydalı olabilmişimdir.

Bir sonraki makalede görüşünceye dek hoşçakalın...


Paylaş:

0 yorum:

Yorum Gönder

Bu Blogda Ara