C# 8.0 – Switch Expression(Property – Tuple – Positional Patterns)

Merhaba,

Günümüzde birçok yazılım dili değişmekte lakin bu değişim esintisinin altında birçok gelişim gerçekleşmektedir. Değişim ile gelişim arasındaki farkı tasavvur edersek eğer; var olan bir özelliğe olmayan bir özellik eklendiğinde yahut sıfırdan yepyeni bir yapı ortaya konduğunda bu bir değişimken, var olan üzerinde yapısal olarak bir iyileştirme yapıldığında ya da kullanım açısından operasyonel süreçte aynı işte pratiksel fark yaratacak güçlendirmeler gerçekleştirildiğinde bu durumları gelişim olarak değerlendirebiliriz. Tabi ki de tüm bu süreç nihai olarak dilin gelişmesi olarak görülebileceği gibi lokal değerlendirmelerde; yapılara ve syntaxa odaklanıldığında yukarıdaki ayrım söz konusu olabilmektedir.

Bu girizgah akabinde, ilgili içeriğimizde yukarıda kavramsallaştırdığımız vurgulara paralel olarak C# programlama dilinin 8.0 versiyonunda, bir yapının(switch yapısı) bir değişim bir de gelişim olmak üzere iki farklı yaklaşımla ele alabileceğimiz yeniliklerini inceleyeceğimizi bildirerek konuya giriş yapalım.

Switch Expressions

Switch yapılanması, bir değerin birden fazla değere karşılık eşitlik durumunu kontrol ettiğimiz ve neticede genellikle tek bir işlem yaptığımız bir kontrol yapısıdır.

Örneğin aşağıdaki gibi haftanın günlerine göre ekranda bilgi yazdıran kod bloğunu ele alalım;
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Yukarıdaki kod yapısını incelerseniz eğer; tek bir işlem çıktısı için okunabilirliği ve kod miktarı açısından oldukça maliyetli bir yapı inşa ettiğimizin farkında mısınız?

Doğrusunu söylemek gerekirse bu güne kadar yapılan çalışmalarda genellikle switch – case yapılanmasından kaçmamızın en büyük sebebi, tek satırlık basit bir kodu operasyona dahil edebilmemiz için bu şekilde geniş yer kaplayan, kalabalık hissi doğuran ve biz yazılımcılar açısından fazladan kod yazmamıza sebep olan bir yapısının olmasından kaynaklanmaktadır.

C# 8.0 versiyonunda, switch – case yapısının bu handikabı göz ardı edilmeksizin direkt müdahale edilmiş ve aşağıdaki gibi tek satırlık işlemler için her türlü maliyeti düşürücü ve daha kullanışlı yapılanma gelmiştir.

C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)
Bu yapılanmada dikkat etmeniz gereken tek husus; switch bloğunun syntax’ı biraz değiştirilmiştir. Kontrolü yapılan değerin yazıldığı parantez sağ taraftan kaldırılmış ve switch keywordünün sol yanına yerleştirilmiştir. Tabi kontrol edilen değer tek olduğundan dolayı parantez koyup koymamak siz developerların kararına kalmıştır. Eğer ki, birden fazla değer kontrol edilecekse işte ona yazımızın devamında ele alacağımız Tuple Patterns ismini vereceğiz…

Son olarak default değerler için aşağıdaki gibi Discard operatörünü kullanmamız yeterli olacaktır.
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Property Patterns

Property patterns, nesnenin propertylerine girerek belirli durumları hızlı bir şekilde kontrol etmemizi gerçekleştiren ve bunu farklı değerler için birden fazla kez tekrarlı bir şekilde yapmamıza olanak sağlayan güzel bir gelişimdir.

Standart PatternProperty Pattern
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns) C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Ayriyetten yukarıdaki görseldeki yapıya ek olarak Property Patterns’da birden fazla property aşağıdaki gibi denetlenebilmekte ve bunun yanında yine discard ifadesi ile default durum her zaman olduğu gibi en sona eklenebilmektedir.
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Tuple Patterns

Tuple patterns ise switch yapılanmasını Tuple nesnelerini kontrol edebilecek şekilde hem standart hemde yeni yapılanmayla bizlere sunmaktadır.

Standart PatternTuple Pattern
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns) C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Positional Patterns

Positional patterns ise Deconstruct özelliği olan nesneleri kıyaslamak yahut değersel karşılaştırmak için kullanılan bir gelişimdir.

C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

When Şartı İle Switch Yapısını Zenginleştirmek

İçeriğimizde şu ana kadar Property, Tuple ve Positional Patterns olmak üzere üç farklı pattern ile switch expressionlarını incelemiş bulunmaktayız. Bu yapıların üçüde farklı yapılar ve durumlarda standart kontrollere nazaran daha pratik verisel kıyaslama olanağı sağlamaktadırlar. Değinilen kullanım farklarının dışında ayriyetten üçü için ortak olan when keywordü ile eşitlik kontrolüne ayriyetten şart ekleme ibareside söz konusudur. Şimdi gelin tek tek tüm patternlere özel switch kontrolüne ayriyetten şart eklemeyide inceleyelim.

Switch ExpressionsProperty Patterns
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns) C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)
Tuple PatternsPositional Patterns
C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns) C# 8.0 - Switch Expression(Property - Tuple - Positional Patterns)

Evet.. Görüldüğü gibi when şartını eklerken bir yandan da tüm varyasyonları yukarıda resmetmiş olduk.

Dikkat ederseniz eğer, bu yeni switch yapılanmaları(patternler) tek seferlik işlemlere odaklanmış yeni geliştirmelerdir.

İ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

*

Copy Protected by Chetan's WP-Copyprotect.