C# 12, daha verimli, okunabilir ve esnek kod yazmayı sağlamak için birçok yeni özellikle karşımıza çıkıyor. Bu sürümde özellikle pattern matching ve koleksiyon yönetimi gibi alanlarda yenilikler dikkat çekiyor. İşte C# 12’nin getirdiği en önemli özellikler:

1. Primary Constructors (Ana Yapıcılar)

C# 12 ile sınıf ve struct’lar için primary constructor (ana yapıcı) desteği geliyor. Bu özellik, sınıf veya yapının tanımında doğrudan parametreler tanımlayarak constructor mantığını basitleştirir. İşte bir örnek:

public class Person(string name, int age)
{
    public string Name { get; } = name;
    public int Age { get; } = age;
}

var person = new Person("Ahmet", 30);
Console.WriteLine(person.Name); // Çıktı: Ahmet

Bu özellik, gereksiz constructor tanımlamalarını ortadan kaldırarak sınıf tanımlarını daha sade hale getirir.

2. Collection Literals (Koleksiyon Literalleri)

Koleksiyon literalleri, dizi veya koleksiyonları hızlı bir şekilde tanımlamayı sağlayan bir özelliktir. C# 12 ile koleksiyonları yeni bir sözdizimi kullanarak daha kısa ve daha okunabilir bir şekilde tanımlayabilirsiniz.

var numbers = [1, 2, 3, 4, 5]; // List<int> türünden bir koleksiyon
var names = ["Ali", "Veli", "Ayşe"]; // List<string> türünden bir koleksiyon

Bu sayede, new List<int>{ ... } gibi uzun ifadeler yerine köşeli parantezler kullanarak koleksiyonları oluşturabilirsiniz.

3. Using Aliases for Any Type

C# 12 ile birlikte herhangi bir tür için using alias tanımlamaları yapılabiliyor. Bu özellik, özellikle uzun isimlendirilmiş veya jenerik türlerle çalışırken kodu daha sade hale getiriyor.

using EmployeeList = System.Collections.Generic.List<Employee>;

EmployeeList employees = new EmployeeList();

4. Default Parameters for Lambdas (Lambda İfadeleri için Varsayılan Parametreler)

Lambda ifadelerine varsayılan parametre değerleri tanımlamak artık mümkün. Bu özellik, lambda fonksiyonlarında daha fazla esneklik sağlar.

Func<int, int, int> add = (x = 10, y = 20) => x + y;

Console.WriteLine(add()); // Çıktı: 30

Lambda ifadelerinde varsayılan parametre kullanarak esnek fonksiyonlar tanımlayabilirsiniz.

5. Primary Interop Feature

Bu özellik, özellikle dış kütüphanelerle (interop) çalışmayı kolaylaştırır. C# 12 ile birlikte, COM veya diğer düşük seviye dillerle daha rahat iletişim kurabilmek için dil seviyesi destek sunuluyor.

6. Extended nameof Expressions (Genişletilmiş nameof İfadeleri)

nameof ifadesi artık yalnızca değişken veya üye adlarıyla sınırlı değil. Daha karmaşık ifadelerde de kullanılabiliyor, bu da hata mesajlarını ve günlükleri daha dinamik hale getiriyor.

var field = "Name";
Console.WriteLine(nameof(Person.Name.Length)); // Çıktı: Length

Bu özellik, daha okunabilir ve dinamik nameof ifadeleri yazmayı mümkün kılıyor.

7. Enhanced Pattern Matching (Geliştirilmiş Desen Eşleştirme)

C# 12 ile birlikte desen eşleştirme (pattern matching) çok daha güçlü hale geliyor. Özellikle koleksiyonlar üzerinde yapılan işlemler için daha detaylı desenler tanımlamak mümkün.

var numbers = new[] { 1, 2, 3, 4, 5 };

bool isValid = numbers is [1, .., 5];
Console.WriteLine(isValid); // Çıktı: true

Bu sayede, belirli bir yapıya sahip koleksiyonları hızlıca kontrol edebilirsiniz.

8. Required Members (Zorunlu Üyeler)

required anahtar kelimesi, bir sınıfın veya yapının belirli üyelerinin atama yapılmasını zorunlu hale getirir. Bu özellik, özellikle veri bütünlüğünü sağlamak için kullanışlıdır.

public class Product
{
    public required string Name { get; init; }
    public decimal Price { get; init; }
}

var product = new Product { Name = "Laptop", Price = 1500 };

required anahtar kelimesiyle, Name özelliğinin atanmadan nesnenin oluşturulması engellenmiş olur.

9. Auto-default Structs (Otomatik Varsayılan Yapılar)

C# 12’de yapıların otomatik olarak varsayılan değerler alması sağlandı. Bu özellik, yapıların kullanılmadan önce varsayılan değerlerle başlatılmasını kolaylaştırır.

struct Point
{
    public int X;
    public int Y;
}

var point = new Point(); // X ve Y otomatik olarak 0 değerini alır

10. Inline Arrays (Dizi Bildirimlerinde Satır İçi Tanımlama)

Dizi bildirimlerinde artık satır içi (inline) tanımlamalar yapılabiliyor. Bu özellik, özellikle belirli bir diziyi hızlıca tanımlamak gerektiğinde faydalı olur.

int[] inlineArray = [1, 2, 3, 4, 5];

Sonuç

C# 12, dilin esnekliğini artırarak geliştiricilerin daha temiz ve etkili kod yazabilmesini sağlıyor. Primary constructors, collection literals ve required members gibi özellikler, hem kodun okunabilirliğini hem de sürdürülebilirliğini artırmaya yönelik yenilikler sunuyor. Özellikle modern yazılım geliştirme ihtiyaçlarını karşılayacak bu özelliklerle, C# dilinin gelişimi hız kesmeden devam ediyor.

C# 12’nin sunduğu bu özellikleri kullanarak projelerinizi daha verimli ve esnek bir şekilde geliştirebilirsiniz.

By mgm

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir