".NET 8 ve C# Kasım 2023 sürümü, .NET dünyasında sadece bir sürüm yükseltmesi değil, aynı zamanda ASP.NET Core proje geliştirmenin geleceğini şekillendirecek yeniliklerle dolu bir dönüm noktasıdır. "
Yeni sürüm, performans iyileştirmelerinden kod yazma pratiklerine, verimliliği artıran özelliklerden geliştirici deneyimini zenginleştiren araçlara kadar bir dizi yenilik getiriyor.
Makalede, Primary Constructors, Collection Expressions, Default Lambda Parameters gibi önemli özelliklerin yanı sıra, Inline Arrays ve Experimental Attribute gibi daha gelişmiş konseptler üzerinde duracağız. Ayrıca, C# 11 ile tanıtılan ve .NET 8 ile daha geniş bir kitleye ulaşması beklenen Raw String Literals gibi özelliklerin pratik kullanımlarını da ele alacağız.
C# 12 ile gelen Primary Constructors, sınıf tanımlarını daha sade hale getiriyor. Özellikle ASP.NET Core projelerinde bağımlılık enjeksiyonunu daha etkili bir şekilde yönetmenizi sağlıyor. Örneğin, bir UserService
sınıfı için bağımlılıkları tanımlamak artık tek bir satırda yapılabiliyor:
public class UserService(IUserRepository userRepository, ILogger logger) : IUserService
{
private readonly IUserRepository _userRepository = userRepository;
private readonly ILogger _logger = logger;
}
Collection Expressions, koleksiyonları başlatmayı ve tanımlamayı daha kısa ve anlaşılır hale getiriyor. Örneğin, bir listeyi tanımlamak için artık aşağıdaki gibi bir sözdizimi kullanılabiliyor:
List<User> users = [ new User { Username = "user1" }, new User { Username = "user2" } ];
Diziler için de benzer bir kolaylık sağlanıyor:
string[] statusCodes = ["SUCCESS", "WARNING", "DANGER"];
Default Lambda Parameters, lambda ifadelerinde varsayılan değerler tanımlama imkânı sunuyor. Bu özellik, kodun okunabilirliğini artırarak, lambda ifadelerinin daha esnek kullanılmasını sağlıyor:
var getFullName = (string firstName, string lastName = "") => string.Join(" ", firstName, lastName);
Alias kullanımı, belirli türler için kısa ve anlamlı isimler tanımlayarak kodun okunabilirliğini artırıyor. Örneğin, List<User>
için bir alias tanımlayarak daha anlamlı bir kod yazabilirsiniz:
using Users = System.Collections.Generic.List<User>;
Experimental Attribute, geliştiricilerin kod bloklarını "deneysel" olarak işaretlemelerine olanak tanıyor. Bu, belirli özelliklerin değişkenlik gösterebileceği ve dikkatli kullanılmaları gerektiği anlamına geliyor:
[Experimental("Feature07")]
public void DeleteAllProducts() { /*...*/ }
Inline Arrays, bellek yönetimi üzerinde daha fazla kontrol sağlıyor. Bu özellik, derleyicinin bellek tahsisatını daha verimli hale getirerek, performansın kritik olduğu durumlarda kullanılabiliyor:
csharp
[InlineArray(5)]public struct MyArray<T> { /*...*/ }
Raw String Literals, çok satırlı string ifadeler ve özel karakterler içeren metinlerin kolayca yazılmasını sağlıyor. Örneğin, SQL sorguları ve JSON oluştururken bu özellik büyük kolaylık sunuyor:
var query = $"""
SELECT *
FROM Products
WHERE Price > {minPrice} AND Price < {maxPrice}
""";
.NET 8 ve C# 12, geliştiricilere daha temiz, okunabilir ve verimli bir kod yazma imkanı sunarak, ASP.NET Core projelerinin geleceğini şekillendiriyor. Gelişen bu özelliklerle birlikte, yazılım geliştirme süreçleri daha kolay hale geliyor.
Bir sonraki yazıda görüşmek üzere!