Visual Studio 2017 İle Gelen Yenikler Webinar Etkinliği

Selamlar;

Öncelikle webinar’a katılan tüm arkadaşlara teşekkür ederim. Umarım sizin için faydalı olmuştur. Kaçıranlar için webinar kaydı ve kodları aşağıdadır. Bir de öneri bölümü var :)

Visual Studio 2017 Rc sürümü ile C# 7.0’da karşımıza çıkan yeni özellikleri, baştan sona güzel bir projeyi kodlayarak inceledik.

Konular:

  1. Kendimi Tanıtım.
  2. Out Variables
  3. Local Functions
  4. Tuples
  5. Pattern Matching (Switch)
  6. Ref Returns Ve Locals
  7. Deconstruction
  8. Literal improvements

Webinar Kaydı:

Proje: Visual Studio 2017 RC’de oluşturulan Windows Application bir uygulamada, 2 farklı tipde (GIF-IMAGE) şeklinde seçilebilen dosyaları, C#7.0 ile gelen yeni özellikler ile belirtilen boyutlarda scale işlemine tabi tutup ekrana basacağız.

Aşağıdaki örnek de görüldüğü gibi “TryParse()” içinde kullanılan out parametreleri (“widthInt ve heightInt“) gene kendi içinde tanımlana bilmiştir. “Out Variables” sayesinde önceden olduğu gibi, ilgili parametrelerin dışarda tanımlama zorunluluğu ortadan kaldırılmıştır.

Aşağıdaki örnek de görüldüğü gibi  “ScaleImage()” Local Function “button2_Click()” methodu içerisinde yaratılıp çağrılabilmiştir. Kısaca Local Functionlar bize method içinde method çağrabilme imkanı sunmaktadır.

Aşağıda görüldüğü gibi “ScaleImage()” methodu Tuples sayesinde 2 parametre dönmüştür “(var boolResult, string flName)“. Kısaca Tuples bize bir methodda birden çok parametere geri dönebilmeyi sağlamaktadır. Dönen değer result değişkenine aktarılmış ve daha sonra “result.fileName” şeklinde ilgili sonuca ulaşılabilmiştir.

Deconstruction Tuples: Yukarıdaki örnekde tanımlanan “ScaleImage()” methoduna göre dönen değerler, yine parantez içinde “(var boolResult, string flName)” şeklinde doğrudan değişkenlere aktarılabilmekte ve ilgili değişkenler aşağıda “flName“‘de olduğu gibi başka bir nesneye atanmadan kullanılabilmektedir.

Aşağıdaki örnekde de görüldüğü gibi, “switch” yapısında ilgili gelen sınıf “case“‘de direk olarak kullanılmış ve bir “t” değişkenine atanmıştır. İlgili sınıf tipine göre farklı işlemler yapılmıştır.

Geldik en sevdiğim yeniliğe. Aşağıdaki örnekte “SizeArray[]” dizisi içerisinden bir eleman random olarak seçilmekte ve “ref” keyword’ü ile”size” değişkenine, değerinin aksine adresi ile birlikte atanmaktadır. Daha sonra ilgili “size” değişkeni değiştirildiğinde, aktarılan “SizeArray[]” dizisinin ‘n inci değeri de değişmektedir. Kısaca “ref” ile Dizinin’ini değeri değil adresi aktarılmakta ve “Remove(), Insert()” komutlarına gerek kalmadan ilgili dizi elemanın değeri değiştirilebilmektedir.

2.Örnek: Var olan “array[]” isim listesinden “Engin” ismine ait item’ın index’i bulunup, ilgili değer “ref” ile “place” değişkenine aktarılır. Ve daha sonra, ilgili değişken “Engin Polat” olarak değiştirildiğinde, isim dizisine ait bulunan i’inci elemanın da “Engin Polat” olarak değiştiği görülür.

Webinar Düzeltmeleri:  

  1. size.IgnoreAspectRatio = false“; ile ilgili dosyalar scale edilirken AspectRatio korunmuş ve girilen “Width” değeri sabit tutularak scale işlemi yapılmıştır. Doğrusu “size.IgnoreAspectRatio = true” olmalıdır.
  2. Tuple Maximum olarak 7 değil 8 parametreye kadar dönüş yapabilmektedir.

Olsa Güzel Olur Diye Düşündüğüm Bir Özellik: Aşağıdaki örnek kesinlikle çalışmamaktadır.  Kodlarda görüldüğü gibi “ref” şeklinde “Tuples” değeri dönülmesi amaçlanmıştır. Dönüş değeri 2 farklı yöntem ile alınabilmesi düşünülmüştür. Böylece ilgili dizi elemanı ve (width, height) özellikleri çekildikten sonra, çekilen dizi elemanına kolaylıkla yeni değer atanabilmektedir. Sizin de bu yaklaşım şekline olan düşüncelerinizi ve varsa yeni fikirlerinizi yorumlar kısmında bekliyorum.

Böylece geldik bir makalenin ve Webinarın daha sonuna. Halen RC sürümü olan Visual Studio 2017 üzerine bolca konuştuk. Bakalım full sürümünde bizi neler bekleyecek.

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

Source Code: https://github.com/borakasmer/VisualStudio2017Features

Herkes Görsün:

Sevebilirsin...

6 Yanıt

  1. Samet dedi ki:

    Hocam ellerinize sağlık, öyle bir iyi oldu ki aslında bu videoyu yayınlamanız, en kısa zamanda tamamen izleyeceğim. Ama bir şey merak ettim neden hala Win7? :)

    • borsoft dedi ki:

      Hahaha Teşekkürler Samet,
      Visual Studio 2017’nin 7’si :) Şaka bir yana, Ben Mac kullanıyorum. Microfonunda sorun vardı. Ev halkının laptop’u ile Webinarı verdim :) Facebook, Okey makinası:)

      Bu arada dikkat süper. Umarım konularıda böyle dikkatli izlersin.

      İyi çalışmalar.

  2. melih dedi ki:

    Güncel bilgileri takip etmek adına çok güzel bir çalışma olmuş.
    Emeğinize sağlık

  3. Hakan dedi ki:

    Selamlar çok başarılı bir çalışma olmuş Teşekkürler ..

Bir Cevap Yazın

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