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 https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx - tıklayınız...
------------- http://www.kasatakip.com - Kasa Takip | http://www.caritakip.com - Cari Takip | http://www.evraktakip.com - Evrak Takip | http://www.etasqlmobil.com - ETA SQL Mobil
|