İlkay İlknur

Welcome

Subscribe to RSS or email service to get notified when a new post is available.

CallerArgumentExpression Attribute In C# 10

November 12, 2021
Caller information attributes are one of the useful ways to obtain caller information to a method in C#. C# 10 brings a new member to the caller information attributes. Before mentioning the new member, let's see why the team had decided to implement it. Consider we have a Exists method with multiple assertions. bool Exists(string[] array, int index) { Debug.Assert(array != null); De...
Continue Reading →

How To Convert Block Scoped Namespaces To File Scoped Namespaces

October 22, 2021
One of the themes of .NET 6 is writing less boilerplate code and helping developers focus on their code instead of ceremony coming with the programming language and the framework. The file scoped namespaces feature is one of C# 10 features that we can consider under that theme. Visual Studio offers a fix to convert a block-scoped namespace to a file scoped namespace. However, you can only apply i...
Continue Reading →

Record Structs In C# 10

October 19, 2021
One of the most significant additions to C# 9 was records. Records help us to implement immutable types with value-based equality semantics. Declaring a record type is pretty straightforward. First, let's declare a record type using the positional syntax. public record Person(string Name, string Surname, int Age); Below is how the compiler rewrites when compiling the record type declared ...
Continue Reading →

A New Modern Timer API In .NET 6 - PeriodicTimer

October 11, 2021
As a developer, you've probably used timers in .NET before. There are plenty of types of timers in .NET right now, and each of them serves a different purpose. List of types of timers in .NET 5. System.Threading.Timer System.Timers.Timer System.Windows.Forms.Timer System.Web.UI.Timer System.Windows.Threading.DispatcherTimer .NET 6 introduces a new timer type called PeriodicTimer. The ma...
Continue Reading →

.NET 6 İle Gelecek Olan Yeni LINQ API'ları

October 01, 2021
.NET içerisinde uzun süredir varolan ve sıklıkla kullanılan özelliklerden biri de LINQ. Geçtiğimiz versiyonlarda LINQ tarafına pek yeni özellik eklenmese de performans ve memory kullanımı bakımından pek çok iyileştirme yapılmıştı. .NET 6 ile beraber ise LINQ tarafında uzun süredir istenilen bazı API'lar bu versiyonla beraber hayatımıza giriyor olacak. Şimdi lafı çok fazla uzatmadan yeni gelecek LI...
Continue Reading →

.NET 6 İle Basitleştirilmeye Çalışılan Null Argument Kontrolü

September 28, 2021
C# 10 ve .NET 6'nın en önemli temalarından biri yazdığımız kodu basitleştirmek ve azaltmak. Bu kapsamda gerek .NET içerisinde gerekse C# içerisinde pek çok yenilik geliyor. Bu yazıdaki konumuz ise metotlardaki null argument kontrolü. Build konferansında C#'ın yeni versiyonu ilk duyurulduğunda beni heyecanlandıran özelliklerden birisi basitleştirilmiş ve yükü compilerın üstlendiği null argument che...
Continue Reading →

C# 10 Global Usings ve File Scoped Namespaces Özellikleri

September 19, 2021
.NET 6'nın ilk release candidate sürümünün çıkmasıyla beraber gerek framework içerisindeki özelliklerin gerekse C# 10 içerisindeki özelliklerin daha stabil ve değişikliğe uğramasının da düşük bir olasılıkta olduğunu düşünebiliriz. Bu nedenle de artık yavaş yavaş C# 10 içerisindeki özellikleri incelemenin de vaktinin geldiğini düşünüyorum. Bu yazıda C# 10 içerisinde bulunan ve adapte olması en kol...
Continue Reading →

.NET 6 İle Beraber Gelen Yeni Bir Timer Tipi - PeriodicTimer

August 23, 2021
.NET içerisinde pek çok alternatifini bulabileceğimiz yapılardan biri de Timer yapıları. Geçmişten bugüne kadar farklı farklı noktalarda farklı ihtiyaçlara cevap veren timer yapıları framework içerisine eklendi ve aktif olarak kullanılmakta. .NET 6 öncesinde kullanabileceğimiz timer tiplerini kısaca listelersek... System.Threading.Timer System.Timers.Timer System.Windows.Forms.Timer System....
Continue Reading →

Random.Shared Propertysi İle Random Tipinin Thread-Safe Olarak Kullanılması

July 27, 2021
Developerlar olarak sıklıkla kullandığımız tiplerden biri de Random tipi. Bazen test amaçlı olarak bazen de farklı amaçlarla Random tipine sıklıkla başvuruyoruz. Random tipinin özelliklerinden biri de thread-safe olmaması. Bir Random instance'ının concurrent olarak kullanılması nadiren de olsa üretilen sayıların 0 olmasına bazen de randomizasyonun kalitesinin düşmesine neden olabilmekte. Bu nokta...
Continue Reading →

.NET 6 İle Beraber Gelen PriorityQueue Kullanımı

July 24, 2021
.NET 6 ile beraber gelen yeni tiplerden biri de PriorityQueue<TElement, TPriority> tipi. System.Collections.Generic namespace'i içerisinde bulunan bu tipin aslında uzun bir mazisi var diyebiliriz. İlk olarak Ocak 2015'te yapılan feature requesti ile başlayan süreç tipin tartışılması, implementasyon detaylarına karar verilmesi, prototiplenmesi derken .NET 6'nın release olması ile beraber son ...
Continue Reading →