Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: C# 7 deki bazı yenilikler ( Preview )
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

C# 7 deki bazı yenilikler ( Preview )

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: C# 7 deki bazı yenilikler ( Preview )
    Gönderim Zamanı: 20.Eylül.2016 Saat 11:48
Yakında çıkacak olan Visual Studio 15'in yeni sürümü içerisinde bulunacak olan C# 7 serisinde şahsen sevdiğim bazı özellikler.


aşağıda göreceğiniz üzere ön tanım olmaksızın değişken tanımı. Eski serilerde int x, int y; şeklinde üst satırda tanım yapmak gerekiyordu.
public void PrintCoordinates(Point p)
{
    p.GetCoordinates(out int x, out int y);
    WriteLine($"({x}, {y})");
}

diğer bir yenilik fonksiyon veya procedur için OUT parametresinin iptal edilebilmesi. aşağıda göreceğiniz üzere "GetCoordinates"  iki parametreli bir yordamdır ve ikinci parametresi out * ile es geçilmiştir.

p.GetCoordinates(out int x, out *); // sadece x değişkeniyle dönecek değeri kullanmak istiyoruz.


diğer bir yenilik şart içerisinde tip kontrolü ve belirlenen tipte değişkene otomatik dönüşüm.
"o" değişkeni object türünde gelmektedir ve ikinci IF kısmında "o" nun INT olup olmadığı kontrol ediliyor ve akabinde "i" değişkenine "int" olarak atanabiliyor.
public void PrintStars(object o)
{
    if (o is null) return;     // constant pattern "null"
    if (!(o is int i)) return; // type pattern "int i"
    WriteLine(new string('*', i));
}


ve şahsen geldiğine en çok sevindiğim özellik ise Apple'ın Swift'inde mevcut olup Apple'ın bizde var onda yok diye övündüğü bir özellik :)  Tuples  yani çoklu değişken dönüşü
normalde çoklu değişken dönüşü yapmak istediğinizde bunu bir CLASS yaratıp orayla ilintilemeniz gerekirdi. Mesela düşünün bir fonksiyon yazdınız ve geriye "int x, int y" iki değer döndürecek. Bunun için bu iki değişkeni içeren bir CLASS yapıp fonksiyonun dönüşünüde bu CLASS tipinde yapardık değil mi? artık buna gerek kalmıyor. şöyle ki:

(string, string, string) LookupName(long id) // tuple return type
{
    ... // retrieve first, middle and last from data storage
    return (first, middle, last); // tuple literal
}
//kullanım olarak
var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");
ve elbette dönüş tipleri isim içerebilir. Şöyle ki:

(string first, string middle, string last) LookupName(long id) // tuple elements have names
ve tekrar kullanımına bakcak olursak

var names = LookupName(id);
WriteLine($"found {names.first} {names.last}.");

bu yapıdaki fonskyonlar için "var" ile tanım yapmadan, dönüş tipi biliniyorsa direkt değişken gruplarıylada dönüş değerleri okunabilir.

(string first, string middle, string last) = LookupName(id1); // deconstructing declaration
WriteLine($"found {first} {last}.");

Tuples için diğer dönüş formatları:

(var first, var middle, var last) = LookupName(id1); // var inside

var (first, middle, last) = LookupName(id1); // var outside

(first, middle, last) = LookupName(id1); // deconstructing assignment

ve diğer bir yenilik ise yerel fonksiyon. Pascal (delphi) de yıllardır mevcut olan yordam içi yordam yapısı c# 7 ile gelmektedir. Şöyle ki;
bakılacağı üzere "Fibonacci" ana yordamdır. İçerisindeki "Fib" ise içsel yordamdırç 
public int Fibonacci(int x)
{
    if (x < 0) throw new ArgumentException("Less negativity please!", nameof(x));
    return Fib(x).current;

    (int current, int previous) Fib(int i)
    {
        if (i == 0) return (1, 0);
        var (p, pp) = Fib(i - 1);
        return (p + pp, p);
    }
}



diğer bir yenilik ise "Ref returns" biraz c/c++ daki pointer olarak tanımlanmış değişken gibi denilebilir. şöyle ki;
Find "ref" dönüşü sağlayan bir fonksiyon
public ref int Find(int number, int[] numbers)
{
    for (int i = 0; i < numbers.Length; i++)
    {
        if (numbers == number) 
        {
            return ref numbers; // return the storage location, not the value
        }
    }
    throw new IndexOutOfRangeException($"{nameof(number)} not found");
}

int[] array = { 1, 15, -39, 0, 7, 14, -12 };
ref int place = ref Find(7, array); // place değişkenine 7'nin olduğu lokasyon yani dördüncü hücre atanıyor!!! burası önemli zira değeri değil !!!
place = 9; // dördüncü hücredeki 7 değeri 9 yapılıyor. yani "array" değişkenine genel bir bakış yaptığınızda değerin array'da değiştiğini görebilirsiniz.
WriteLine(array[4]); // array'ın dördüncü değerini yazdırıyoruz ki çıktı 9'dur.


ve visual studio enterprise 15 preview 4'ü indirmek için tıklayınız...









Düzenleyen murat turan - 16.Kasim.2016 Saat 13:12
Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 20.Eylül.2016 Saat 20:38
eğer VS 15'i kurarken "Windows 7 SP1 requires KB2952664" gibi bir hata alırsanız;

eğer sisteminiz 32Bit (x86) ise

%windir%\system32   klasörüne "dismapi.dll" adında boş bir DOSYA yaratınız.

eğer 64Bit (x64) bir sistem kullanıyorsanız aynı dosyayı %windir%\SysWow64  klasörüne oluşturunuz.
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,198 Saniyede Yüklendi. [power by : WebWiz]