Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# 9.0 – Pattern Matching Enhancements

Merhaba,

Pattern Matching’ler ilk olarak C# 6.0’da tanıtıldılar ve ardından C# 7.0’da(bknz : C# 7.0 – Pattern Matching) daha da geliştirildiler ve C# 8.0’da(bknz : C# 8.0 – Switch Expression(Property – Tuple – Positional Patterns)) ise üzerine daha da ilginç özellikler eklediler ve son olarak C# 9.0’da harika hale getirdiler 🙂

Bu içeriğimizde; Simple Type Patterns, Relational Patterns, Logical Patterns ve Not Patterns olmak üzere dört desen olarak gelen C# 9.0 Pattern Matching yeniliklerini inceliyor olacağız.

Gelin bu desenleri sırasıyla tek tek ele alalım;

Simple Type Patterns

Bir değişkenin belirli bir türde olup olmadığını hızlı bir şekilde kontrol etmemizi sağlayan desendir. C# 9.0’dan önceki sürümlerde tür kontrolü yapılırken tür bildirimlerinin yanına değişken adı tanımlaması yahut Discard ifadesinin kullanılması zaruriydi. C# 9.0 ile bu gereksiz zorunluluk ortadan kaldırılmış ve direkt olarak tür kontrol işlemine odaklanılması sağlanmıştır.

C# 9.0 öncesi C# 9.0 sonrası
C# 9.0 - Pattern Matching Enhancements C# 9.0 - Pattern Matching Enhancements

Bir başka örnek,

C# 9.0 öncesi C# 9.0 sonrası
C# 9.0 - Pattern Matching Enhancements C# 9.0 - Pattern Matching Enhancements

Relational Patterns

Desenlerde <, >, <= ve >= operatörleri kullanılabilmekte ve belirli karşılaştırmalar hızlıca gerçekleştirilebilmektedir. Örneğin;
C# 9.0 - Pattern Matching Enhancements
Yukarıdaki gibi tüm ihtimallerin değerlendirildiği kodlarda '_'(hiçbiri) operatörüne gerek kalmayacağı için kullanılmasına müsaade etmeyecektir;
C# 9.0 - Pattern Matching Enhancements
Lakin ihtimallerin hepsi değerlendirilmediği taktirde '_'(hiçbiri) operatörü kullanılabilmektedir.
C# 9.0 - Pattern Matching Enhancements

Logical Patterns

and, or ve not gibi mantıksal operatörler kullanılabilmektedir. Misal;
C# 9.0 - Pattern Matching Enhancements
yukarıdaki ekran görüntüsündeki örneği incelerseniz eğer ilgili product'ın Technologic or Computer kodu sayesinde iki farklı türden biri olma durumu değerlendirilmektedir. Burada bu türler üzerinde gerekli kontrol sağlandığı için herhangi birinin aynı switch bloğu içerisinde kontrol amaçlı tekrar kullanılmasına müsaade edilmeyecektir.
C# 9.0 - Pattern Matching Enhancements
Görüldüğü üzere bütünsel mantık işlemekte ve 'Computer' türünün kontrol edilmesi lüzumsuz olacağı için derleyici tarafından bu işlem reddedilmektedir.

İlgili deseni yukarıdaki Relational Pattern ile örneklendirirsek eğer;
C# 9.0 - Pattern Matching Enhancements
Özellikle bu iki desenin oldukça uyumlu olduğu kanaatindeyim 🙂

Not Patterns

not operatörünün kullanılabildiği bir desendir. Yukarıdaki 'Logical Patterns'de en son 'Relational Pattern' ile verilen örnekte olduğu gibi eşit değillik durumunda kullanılabildiği gibi is not Type tarzı kalıpsal keyword'lerde de kullanılabilmektedir. Misal olarak;
C# 9.0 - Pattern Matching Enhancements
yukarıdaki örneği incelerseniz, verilen product'ın 'Technologic' ve 'Computer' olmaması durumunda eğer 'Goggles'da değilse 'Gözlük' değerini döndürecektir.

Bir başka örnek vermemiz gerekirse eğer;
C# 9.0 - Pattern Matching Enhancements

Sonuç olarak; C# 9.0'da, önceki sürümlerde gelen güzel ve kullanışlı özelliklerin daha da nitelikli hale getirildiğini ve semantik açıdanda daha güçlendirildiğini gözlemliyoruz.

İlgilenenlerin faydalanması dileğiyle...
Sonraki yazılarımda görüşmek üzere...
İyi çalışmalar...

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*