Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# ve .NET Sürüm Yükseltme: Eski Projeyi .NET 10'a Taşımak
Bir .NET 6 projesini .NET 10'a taşımak: destek takvimi, LangVersion ile TFM ilişkisi ve latest tuzağı, global.json ile SDK sabitleme, gerçek CS8981 ve CS9258 uyarılarını okumak, field keyword'ünün sessiz davranış değişikliği ve breaking change sayfalarını okumak; C# 15 için ayrı yazı.
C# 14 Yenilikleri: Extension Members, field ve Null-Conditional Atama
C# 10 ve C# 13'teki karşılıklarıyla C# 14: null-conditional atamada sağ tarafın atlanması, extension property, static extension member ve extension operatör, field keyword'ü, array'lerin span'e dönüşümü, nameof(List<>), lambda parametre modifier'ları, partial constructor/event ve compound atama operatörleri.
C# 13 Yenilikleri: params Collections, Lock ve Partial Property
C# 10'daki karşılıklarıyla C# 13: yeni Lock tipi ve CS9216 tuzağı, allocation ölçümüyle params collections, ref struct'ların interface implemente etmesi ve allows ref struct, partial property'ler, OverloadResolutionPriority, \e kaçışı ve initializer'da ^ index'i.
C# 12 Yenilikleri: Primary Constructor ve Collection Expression
C# 10'daki karşılıklarıyla C# 12: primary constructor'ın parametre olup property olmaması ve CS9124 uyarısı, köşeli parantezli collection expression'lar ve spread, lambda'larda default parametreler, her tipe alias, inline array'ler, Experimental attribute ve interceptors notu.
C# 11 Yenilikleri: Raw String, required ve List Pattern
C# 10'da nasıl yazıyorduk, C# 11'de nasıl yazıyoruz: raw string literal'ler ve kültür tuzağı, required member'lar ve SetsRequiredMembers, list pattern'ler, dil ve kütüphane ayağıyla generic math, file-local tipler ve UTF-8 literal'ler.
C# Sürümleri: 1.0'dan 10'a Dilin Kısa Tarihi
C# 1.0'dan C# 10'a her sürümün imza özellikleri, çıkış tarihleri ve .NET eşleşmesi; aynı kodu farklı LangVersion değerleriyle derleyip compiler'ın hangi özelliğin hangi sürümden geldiğini nasıl söylediğini görmek.