Visual Studio 15 Preview ile C# 7.0 Yeniliklerini İnceleme

Selamlar,

Bugün Visual Studio  15 Preview’da C# 7.0 ile gelen ve henüz gelmeyen özellikleri örnek kod parçaları ile inceleyeceğiz.

1-) Öncelikle Visual Studio 15’in Visual Studio 2015’e göre %30 daha hızlı çalışacağı belirtiliyor.

Untitled

2-)  Visual Studio 15’de execute in Interactive özelliğinin gelmesi. İlgili kod parçacığı seçilip, sağ tıklanınca açılan menüden Excute in Interactive seçilince, ilgili kodlar Interactive penceresinde çalıştırılır ve uygulama derlenmeden seçilen kod parçacığının sonucu Interactive ekranına aşağıdaki gibi basılır.

Inter

3-) Local Functions: Önceki makalemden bu konu ile ilgili detaylı bilgi alabilirsiniz. Kısaca özetlemek gerekir ise, method içinde method tanımlamayı yarıyan bir yapıdır.

Not: Bu yeni özelliklerin çalıştırılabilmesi için çalıştırılacak proje sağ tıklanıp, “Properties” sekmesinden soldaki kulakçıklardan “Build” seçilir. Aşağıda görüldüğü gibi Conditional compilation symbols kısmına “__DEMO__” yazılarak yeni özelliklerin hatasız bir şekilde derlenmesi sağlanır.

Demo

a-) Aşağıdaki örnekte Main methodu altında “Selector()” methodu tanımlanmış ve kendisine gelen string değişkenin “ToUpper()” ile büyütülmesi sağlanmıştır.  Daha sonra Linq kullanılarak  “words[]” string dizisi “select()” methodu ile çekilip içine aşağıda tanımlanan “Selector()” konulmuş ve tüm kelimelerin büyük olara ekrana basılması, yukarıda “Interactive” tanımlama ekranında görüldüğü gibi sağlanmıştır.

b-) Aşağıdaki örnekte yine aynı “words[]” kelime dizisi “predicate()” methodu ile gelen string değerin “karakter uzunluğu” ile dizideki “index değeri“, yani sıra numarası eşit ise “true” değeri dönülmektedir. Buna göre ilgili kod çalıştırılınca sadece “star” değeri geri dönülmektedir. Çünkü “star” hem “4. sırada” hem de “4 karakter” uzunluğundadır.

4-) Pattern matching :  “Switch – Case” yapısında gelen değişken tiplerine göre farklı işlemler yapıla bilmektedir. Örneğin aşağıda generic bir değişken bekleyen bir method tanımlanmıştır. Gelen değişken tipine göre yani “string veya int’e” göre farklı operasyonlar yürütülmüştür. Bunun yerine gelen bir sınıf ya da interface tipine göre de farklı işlemler yapılabilirdi. Aşağıda örnek olarak, string “Bora” değişkenine göre alınan sonuç ekranı basılmıştır.

pattern

5-) Ref returns and ref locals : Burada amaç private değişkenleri olan bir sınıfın değerlerini gerektiği zaman “ref” keyword’ü ile değiştirebilmektir.  Aşağıda görüldüğü gibi “ForVariables” sınıfına ait “x” ve “y” private değişkenleri vardır. “GetByRef()” methodu ile gelen string parametreye karşılık gelen değişken referance tipi ile birlikte geri dönülmektedir. İlkin “x” değişkeni dönülmüş ve 42 değeri atanmıştır. 2. durumda “y” değişkenine, “ForVariables”‘a ait “y” değişkeni referance değeri atanmış ve 99 değeri verilmiştir. Böylece “ForVariables()” sınıfına ait private “x,y” değişkenlerine sıra ile 42 ve 99 değerleri atanabilmiştir. ilk başta herhangi bir değer atanmadan”ToString()” methodu override edilerek çağrıldığında “0,0” değeri dönülür. İlgili değişkenlere “ref” ile değer atandığında “42,99” sonuçları console’da görülür.

Ekran çıktısı:

ref

6-) Binary Literals ve Digit Separators :  Aşağıda görüldüğü gibi 1 milyar değeri “_” seperetor’ü ile okunmayı kolaylaştırmak için ayrılmıştır. Ayrıca binary degerler artık direk değişkene atanabilmektedir. Örnek “foo2″‘ye ilgili degerler “0x7FFF_1234” şeklinde atılmaktadır. Ayrıca size örnek olması amacı ile zaten şu anda var olan gelen bir Binary Parametrenin string karşılığı bulunup ekrana basılmıştır.  Böylece binary değişkenlerde seperetor’ün önemi gösterilmiştir.

consoleBinary

7-) Tuples: Bu konu ile ilgili detaylı bilgili önceki makalemden erişebilirsiniz. Bundan sonraki yazılan maddeler henüz derlenmemektedir. Ama muhtemelen bir sonraki Visual Studio 15  versiyonunda çalışacaktır. Tuple’da esas amaç, bir metohodun birden çok değer geri dönmesini sağlamaktır. Tuple’da en fazla 8 değişken geri dönülebilmekte ve geri dönüş tipinin Tuple olması durumunda yeni bir 8 değişken daha bu değişkenin içinde dönülebilmektedir. Dolayısı ile istenen sayıda değer geri dönülebilmektedir. Önceden Tuple’da esas sorun, dönülen değişkenlere direk ismi ile erişilemiyordu. Artık aynı bir sınıfın propertyleri gibi geri dönüş değişkenlerine erişilip, değerleri alınabilmektedir. Aşağıdaki örnekte birden fazla kişiden para toplanmıştır.”TotalMoney()” methodunda toplanan tüm para ve toplam para veren kişi sayısı bulunmakta ve geri dönülmektedir.

8-)Non-Nullable Reference Types : Bu özellikle null olmasını istemediğimiz “string” değişkenlerin başına ünlem koyarak tanımlayabiliriz.

9-)Records (or Record Types): Amaç propertyleri olan bir sınıfın, yaratılma anında değerlerinin tek satır ile atanmasıdır. “Method” ile karıştırılmasın. Geriye değer döndürme gibi bir durum söz konusu değildir.

Sınıfın çağrılış şekli:

10-)Immutable Types  : Geldik benim için en fovori yeniliğe. Özellikle benzer özelliklerde sınıflar ile çalışılan yapılarda, gerçekten bir ilaç niteliğinde diyebilirim. Mesela bir oyun yapacağız ve benzer özelliklerde birçok karakter kullanacağız. Sınıfımız aşağıda görüldüğü gibi “Person“. Aynı soyada sahip 2. bir karakter yaratılacağı zaman, sadece değişen propertyler “with” ile tanımlanıp , ilgili person sınıfının diğer propertyleri miras olarak alınabilir. Böylece yeni bir “per2” adında “Person” sınıfı oluşturulurken, sadece değişen soyad tanımlanırken diğer benzer propertyleri tanımlanmaz. Böylece, kodlama anında büyük bir hız kazanılır.

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

Source: https://devblogs.microsoft.com/dotnet/whats-new-in-csharp-7-0/

Source Code : https://github.com/borakasmer/C-7.0-Futures

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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