Net 4.6 İle Gelen Yenilikleri Mvc’de İnceleyelim

Selamlar;

Bu makalede Visual Studio 2015 RC ile gelen enson C# 6.0 yeniliklerini inceleyeceğiz. Aşağıda görüldüğü gibi C#’ın tarihçesinde günümüze kadar gelen önemli yenilikleri görmekteyiz. C# 6.0’da bu kadar büyük yenilik bulunmamaktadır. Daha ufak yazım kolaylıkları sağlayan küçük yenilikler ile karşımıza çıkmaktadır. Bu kolaylıklar tabi ki Roslyn olarak adlandırılan tamamen baştan yazılan yeni derleyici ile mümkün bir hal almıştır. Artık old school olarak adlandırılan bu zamana kadar eski derleyecinin değiştirilmemesinden kaynaklanan belli kalıplardan kurtulmanın zamanı gelmiştir.

News

Daha önceki yazılarımda da bu konuya değinmiştim. Ama bazı özellikler kaldırılmış ve bazıları da değiştirilmiş. Bundan dolayı ben de bu yeni özellikleri size bir mvc projesinde anlatmaya kararverdim.

Öncelikle aşağıda görüldüğü gibi .Net Framework’ü 4.6’ı olan yeni bir web application oluşturulur.

Create

Daha sonra aşağıda görüldüğü gibi MVC bir Template seçilir.

Create2

1-) Default Property Atama :

Property tanımlama zamanında default değer atamaya yarar. Örneğin aşağıda tanımlanan Customer class’ı ilk yaratılırken propertylerine herhangi bir değer atanmaz ise Name, Surname ve Age özellikleri çağrılma anında ilk atanan değerler ile karşımıza çıkar.

HomeController.cs:

Index.cshtml:

Ekran:

screen

2-)Static Members Kullanma:

Aşağıda görüldüğü gibi using kısmına static class eklendiğinde bu class altındaki static methodlara doğrudan erişilebilir. Örneğin Math.Sqrt() yenine Sqrt() şeklinde ilgili method kullanılabilir.

Using

3-) String İnterpolasyonlar:

Aşağıda görülen uzun yol olan String.Format’da {0},{1} yazmak yerine bu alanlara direk _x ve _y kordinatlarını yazdırılabilir.

Yeni yazım şekli: $“({x},{y})” $ ile başlıyan string ifadeler direk {} arasına yazılır.

4-) Methodlarda Lambda Kullanımı :

İşte geldik benim favori yeniliğime. Lambda expressionları artık methodlarda da kullanabiliriz. Mesela aşağıda return yazmadan direk lambda ile (=>) ile ilgili string result gönderelebilir.

Property Tanımlamada Lambda Kullanımı: Aşağıdaki property yerine bir altındaki kod tanımı yapılabilir.

Yeni Yazım Şekli: Lambda kullanılarak (=>)hatta get bile kullanılmadan aşağıdaki gibi ilgili property tanımlanabilir.

5-)Index Atamaları:

Aynı propertylerde olduğu gibi indexleri de yaratılırken kendi içlerinde değerlerini atayabiliriz. Aşağıda bir json object için herbir index değerine eski yol ile tek tek değer atanmıştır.

Eski Yöntem:

Yeni Yöntem:

Değişken tanımlanmadan doğrudan değerler tanımlama sırasında atanmıştır.

6-)Null-Conditional Kontrolü: 

Aşağıda json değerleri çekerken herbir değer için null kontrolü yapılmıştır. Böylece ilgili json kordinatlar integer’a pars edilip Point olarak geri döndürülmüştür.

Yeni Yöntem:

Burda “?” işareti konarak ilgili nesnenin null kontrolü kolaylıkla yapılmaktadır. Nesne null ise zaten “?” işaretinden sonraki kısıma geçilmez.

7-)Try Catch Filitreleme:

Hata yakalama anında filitreleme yapılabilmektedir. Bu da belirlenen kriterlere göre hata fırlatılmasını sağlamaktadır. Aşağıdaki örnekte “0”‘a bölünme durumunda bölünen sayı 50’den küçük ise “0” değilse “1” değeri dönmesi hata yakalama anında koşul belirlenerek yapılmıştır.

8-)Catch ve Finally’de Await Kullanımı: 

Eğer hata fırlatma anında yoğun bir işlem yapılacak ise bunu asenkron çalıştırmak performans anlamında bize büyük kolaylık sağlayabilir. İşte bu noktada aşağıdaki örnekde olduğu gibi hata fırlatma anında loglama ve mail atma işlemleri asenkron yapılabilmektedir.

9-)nameof Keyword’ü:

Aşağıdaki örnekde nameof keyword’ü ile method’a gelen değişken ismi hata mesajı içinde gönderilmektedir.  Aşağıdaki kullanım yerine, yeni yöntem olan nameof keyword’ü kullanımı ilerde kodda oluşabilecek değişikliklerde büyük kolaylıklar sağlar.

Eski Yöntem:

Yeni yöntem: Bu şekilde kullanımda ilerde parametre ismi değişse bile kod tarafında başka bir değişikliğe gerek kalmamaktadır.

Primary Constructor denen Classlar ilk yaratılırken constractor değerlerini, method gibi başta alma özelliği şuan için kaldırılmış görülüyor. Örnek kullanım şekli aşağıdaki gibidir.

Bu değişiklikler yeni derleyici olan Roslyn’in yazılması ile karşımıza çıkan, işe yarar kolaylıklardır. Bu bir son değil başlangıçtır. Roslyn sayesinde daha birçok yeniliğin kapıda olduğunu söylemek hiç de zor değildir.

Geldik bir makalenin daha sonuna. Yeni bir makalede görüşmek üzere hoşçakalın.

Kaynaklar: MSDN, pluralsight.com,Channel9.msdn.com, infoworld.com, stackoverflow.com

 

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. romario dedi ki:

    Geçen Ekim’de çıkan Java 8 versiyonunda da Lambda yenilikleri dikkat çekiyordu. C# ta aynı şekilde yenilendi. Bu sayede C# ve Java Ruby’nin kullanışlığına kavuştu. Ruby’den bir parantez açarak Scala, Clojure, F# gibi diğer fonksiyonel dilleri de dahil etmeli.

  2. 4, 6 ve 8. maddeleri ilk yeni projemde kullanıyor olacağım. Çok teşekkürler.

  3. borsoft dedi ki:

    Selamlar Cem;
    Alıntılara borakasmer.com’u yazmışınız.

    Teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.