Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# Generics Neden Var: ArrayList, Boxing ve Tip Güvenliği
ArrayList'in her şeyi object olarak saklamasının bedeli: runtime'a kayan InvalidCastException, value type'larda boxing ve sekiz kat bellek. List<T> ile tip güvenliği, runtime'ın generic tipleri nasıl gördüğü ve eski collection'ları OfType/Cast ile generic dünyaya taşımak.
C# Generic Class, Generic Method ve Constraint'ler
Kendi generic class ve method'larını yazmak: Page<T> ile sayfalama, tip çıkarımının sınırları, default ve constraint'siz T? tuzağı. class, struct, new(), notnull, unmanaged ve Enum constraint'leri gerçek derleyici hatalarıyla; closed tip başına static ve generic kodda == tuzağı.
C# Generic Variance: Covariance ve Contravariance (in ve out)
List<EBook> neden List<Book> olamaz ama IEnumerable<Book> olabilir? Array covariance'ın deliği, out ile covariance, in ile contravariance, delegate'lerde variance, kuralların sınırları ve CS0266'nın önerdiği cast tuzağı.
C# 11–12 ve .NET 7–8: Generic Math, Frozen ve Collection Expressions
C# 10'da yazılamayan generic toplama, static abstract member'lar ve INumber<T> ile generic math; bir kez kurulup çok okunan FrozenDictionary ve FrozenSet'in BenchmarkDotNet ölçümü; köşeli parantezli collection expression'lar, spread ve CollectionBuilder.