NET Compiler Platform Roslyn

Selamlar;

Uzun süredir üzerinde çalışılan yeni Roslyn compiler projesi artık yavaş yavaş meyvesini vermeye başladı. Bugün enson Visual Studio 2014 CTP3 ile gelen Roslyn yeniliklerini inceleyeceğiz. Uzun süredir yapılmak istenen yenilikler eski compiler yüzünden yapılamıyordu. Artık yeni compiler Roslyn ile istenen yenilikler kolayca implemente edilebiliyor.

roslyn

Öncelikle Visual Studio 2014’de Roslyn’in özelliklerini kullanmak için oluşturulan proje bir text editöründe açılıp alttaki satırın eklenmesi gerekmektedir.

update

Şimdi sıra ile gelen yeniliklere göz atalım.

  • Auto-property enhancements : Propertyler’e değer atanmaması durumunda default değer atanabilmektedir.

 Sonuç : Bora Kaşmer

  •  Parameters on classes and structs : Classlar oluşturulurken constructer olmadan parametre alması sağlanmıştır.

 Sonuç: Duru Kaşmer

  • Using static : Static class’lar using olarak projeye eklenebilmektedir.

  •  Extension methods : Extension methodlar projeye using ile eklenebilmektedir.

Sonuç :

result

  • Declaration expressions : Expressionlar içerisinde artık tanımlama yapılabilmektedir. Ençok kullanıldığı yerler out parametreleridir.

Sonuç:

result2

  • Exception filters : Yakalanan hatalara filitre konabilmektedir. Böylece belirtilen catch bloğunda sadece tanımlanan exception filtresine uygun exceptionlar yakalanır. Eğer hiçbir filitreye uymayan exception var ise stacktrace kaybolmadan işleme devam edilir. Aşağıdaki örnekte de görüldüğü gibi number değeri 50’den küçük olduğu için en sondaki catch’e düşmekte ve 1 değerini döndürmektedir. Eğer number 50’den büyük olur ise ilk cathc’e düşmekte ve geriye number’ın kendi değeri döndürülmektedir.

Sonuç: 1

  •  Await in catch and finally blocks : Try ve catch blokları arasında asenkron methodlar işletilebilmektedir. Aşağıdaki örnekte görüldüğü gibi hata fırlatılmış ve number 50’den küçük olduğu için ikinci catch bloğuna gidilmiştir.Burada borakasmer.com’ sitesine asenkron olarak gidilip sitenin string karakter sayısı geriye döndürülmüştür

  •  Null-conditional operators :  Herhangi bir class veya propertyleri null ise bunlara erişmek için null kontrolü yapmadan çok daha basit yolla değerleri çekebiliriz.

Yukarıdaki kodun yerine aşağıdakini kullanabiliriz.

Böylece eski compiler’dan kurtulunca artık neler yapabileceğimizi gördük. Daha birçok yeniliğin kapıda olduğunu belirtir bloğumu takip etmenizi tavsiye ederim.

Detaylı Pdf: http://www.borakasmer.com/projects/ctp3-csharp-features.pdf

Geldik bir makalenin daha sonuna.

Herkese hoşçakalın.

Herkes Görsün:

Sevebilirsin...

1 Yanıt

  1. Romario diyor ki:

    Aslında açık kaynaklı yazılım dünyasında 20 senedir olan imkanların C# dünyasına gelmesi bu. En basitinden örnek, Roslyn’in Read-Eval-Print Loop özelliği Ruby veya Python gibi dillerde irb ve IPhyton adları altında 10+ yıldır vardı. Ayrıca Ruby DSL Embedding alanında büyük yaygınlık kazandı. Fakat “derleyici” konusunda hepsinin (günümüzde dahi) lideri LISP’tir çünkü tum bu yukarda verilen özellikleri 20 yıldır LISP zaten kullanıyordu. Yine en basitinden örnekle ” Propertyler’e değer atanmaması durumunda default değer atanabilmesi” konusunda LISP, fonksiyon argümanları arasında &optional parametresini kullanmaktadır, böylelikle herhangi bir argüman isteğe bağlı olarak verilebilir veya verilmeyebilir veya default değer olarak da verilebilir. Tüm bunlar LISP’in 1990 implementasyonunda vardı :) Daha bitmedi, C#’ta “Generics” olarak gündeme gelen, tip belirtme zorunluluğu olmayan değişken/sınıf tanımlama imkanı da LISP’te 1980’lerden beri vardı, cunku LISP’te değişkenlerin integer, string gibi tipi yoktur, değişkenler ancak değer atandıktan sonra tipe sahip olurlar. Aynı durum tabi ki sınıflar için de geçerlidir.

    Tüm bunlardan sonra C# ‘ın bu yenilikleri içermeye başladığını görmek çok güzel bir olay cunku programlama dünyasındaki ufku açıyor. Ancak yine de C# ‘nin ağdalı syntax yapısı yüzünden Ruby gibi pratik ve kısa olması güç.

Bir Cevap Yazın

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