Giriş
C# (C-sharp), Microsoft tarafından geliştirilen ve .NET framework ile uyumlu, modern, nesne yönelimli bir programlama dilidir. C#, güçlü bir dil olmasının yanı sıra, kolay öğrenilebilir olması ve geniş kütüphane desteği ile de tercih edilmektedir. Bu makalede, ileri seviye C# konularını ele alacağız ve dilin güçlü yönlerini daha etkin kullanmanıza yardımcı olacağız.
İleri Seviye Konulara Giriş
1. Delegates ve Events
Delegates ve events, C#'ta fonksiyonları nesne olarak kullanmamıza olanak tanır. Delegates, belirli bir metod imzasına sahip fonksiyonları temsil eder. Events ise, belirli olayların tetiklenmesi durumunda çağrılacak fonksiyonları tanımlar.
Delegate Tanımlama ve Kullanımı:
public delegate void MyDelegate(string message);
public class Program
{
public static void Main(string[] args)
{
MyDelegate del = new MyDelegate(ShowMessage);
del("Hello, World!");
}
public static void ShowMessage(string message)
{
Console.WriteLine(message);
}
}
Display More
Event Tanımlama ve Kullanımı:
public class Publisher
{
public event MyDelegate OnPublish;
public void Publish(string message)
{
OnPublish?.Invoke(message);
}
}
public class Subscriber
{
public void HandleEvent(string message)
{
Console.WriteLine("Event received: " + message);
}
}
public delegate void MyDelegate(string message);
public class Program
{
public static void Main(string[] args)
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.OnPublish += subscriber.HandleEvent;
publisher.Publish("Hello, Event!");
}
}
Display More
2. LINQ (Language Integrated Query)
LINQ, koleksiyonlar üzerinde sorgulama yapmamızı sağlayan güçlü bir özelliktir. LINQ, SQL benzeri sorgulama cümleleri kullanarak veri manipülasyonu yapmamıza olanak tanır.
LINQ Kullanımı:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
3. Asenkron Programlama ve async/await
Asenkron programlama, uygulamanızın kullanıcı arayüzünü bloke etmeden uzun süren işlemleri gerçekleştirmesine olanak tanır. C#'ta async ve await anahtar kelimeleri, asenkron işlemleri kolaylaştırır.
Asenkron Metod Oluşturma ve Kullanma:
public async Task<string> GetDataAsync()
{
await Task.Delay(2000); // 2 saniye bekle
return "Data retrieved";
}
public async Task MainAsync()
{
string data = await GetDataAsync();
Console.WriteLine(data);
}
4. İleri Seviye Nesne Yönelimli Programlama (OOP) Teknikleri
Polymorphism (Çok Biçimlilik):
Polymorphism, nesnelerin farklı formlarda işlem görebilmesini sağlar. Bu, özellikle base class üzerinden türetilmiş sınıfların metodlarının çağrılması sırasında kullanışlıdır.
Örnek:
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
public class Program
{
public static void Main(string[] args)
{
Animal myAnimal = new Dog();
myAnimal.MakeSound(); // Output: Bark
}
}
Display More
5. Reflection
Reflection, çalışma zamanında tipler hakkında bilgi edinmemizi ve bunlarla etkileşime geçmemizi sağlar. Bu özellik, dinamik olarak yüklenen assembly'ler veya metadatalar ile çalışırken kullanışlıdır.
Reflection Kullanımı:
Type type = typeof(System.String);
Console.WriteLine("Methods in System.String:");
foreach (MethodInfo method in type.GetMethods())
{
Console.WriteLine(method.Name);
}
6. Dependency Injection (Bağımlılık Enjeksiyonu)
Dependency Injection, bir sınıfın bağımlılıklarının dışarıdan sağlanması prensibine dayanır. Bu, özellikle birimler arası bağımlılıkları azaltarak, kodun daha modüler ve test edilebilir olmasını sağlar.
Dependency Injection Örneği:
public interface IMessageService
{
void SendMessage(string message);
}
public class EmailService : IMessageService
{
public void SendMessage(string message)
{
Console.WriteLine("Email sent: " + message);
}
}
public class Notification
{
private readonly IMessageService _messageService;
public Notification(IMessageService messageService)
{
_messageService = messageService;
}
public void Notify(string message)
{
_messageService.SendMessage(message);
}
}
public class Program
{
public static void Main(string[] args)
{
IMessageService messageService = new EmailService();
Notification notification = new Notification(messageService);
notification.Notify("Hello, Dependency Injection!");
}
}
Display More
Sonuç
İleri seviye C# konuları, dilin sağladığı güçlü özelliklerden tam anlamıyla faydalanmanıza olanak tanır. Delegates ve events, LINQ, asenkron programlama, polymorphism, reflection ve dependency injection gibi konular, yazılım geliştiricilerin daha esnek, modüler ve performanslı uygulamalar geliştirmesine yardımcı olur. Bu makalede ele alınan konuları uygulayarak, C# bilgilerinizi bir üst seviyeye taşıyabilirsiniz.
Kurs ve Eğitim Alabilmek İçin Sizlere En İyi Kurs Sayfalarını Gösterdiğimiz yazımızıda Okuyun Lütfen
C# Yazılım Dili için En Uygun Ücretli ve Ücretsiz Kurs Eğitim Serileri
C# Yazılım Dili için En Uygun Ücretli ve Ücretsiz Kurs Eğitim Serileri
C# yazılım dili, geniş bir kütüphane desteği ve güçlü özellikleri ile yazılım geliştiriciler arasında popüler bir tercih olmaya devam ediyor. C# öğrenmek veya mevcut bilgilerinizi ilerletmek için pek çok online kaynak mevcut. Bu makalede, en iyi ücretli ve ücretsiz C# kurslarını bulabileceğiniz platformları inceleyeceğiz.Ücretsiz C# Kursları
1. Microsoft Learn
Microsoft Learn, Microsoft…Sonraki Eğitici İçeriklerimizde Görüşmek Üzere