08 December 2016

C# .Net 3.0 ile Gelen Yenilikler

Değişken tanımlama yöntemi (Implicitly typed local variables): Değişken tanımlarken tiplerini verme zorunluluğumuz yok. var anahtar kelimesini kullanarak değişken tanımlarsak, değişkene atadığımız değer tipinin ne olacağına karar verecektir.

örnek:

var sayi = 5;
var description = "yazılımcı blog";

 

Anonim tipler (anonymous types): İsimsiz veri tipleri söz konusudur. var deyimi ile bu veri tiplerini oluşturuyoruz. Bu yapı Javascript dilini anımsatmaktadır.

var calisan = new { Ad="Sema",Soyad="Akyilmaz",ID=1};

 

Nesnelere ilk değer ataması (object initializer): Nesneleri tanımladığımız anda özelliklerini verebiliyoruz.

string[] isimler = {"Sema","Eda","Ahmet" };
List<string> isimler = new List<string> {"Ahmet","Mehmet","Ali"};

 

Lambda ifadeleri (lambda expression): Lambda ifadeleri birçok programlama dilinde mevcuttur. Çok karışık algoritmaları kolay bir şekilde ifade edebilmemizi sağlamaktadır.

List<int> sayilar= new List<int>() {1,2,3,4,5,6,7,8,9,10};
 var ikiyeBolunenler = sayilar.FindAll(deger => deger % 2 == 0);
foreach (int item in ikiyeBolunenler)
 {
 Console.WriteLine(item);
 }

 

Genişletme Metodları (Extension Methods): Bu metodlar sayesinde kod içerisinde bulunan veri tipini genişletme olanağımız mevcuttur. Burada önemli kural: Metodun mutlaka statik bir sınıf içerisinde statik olarak tanımlanması gerekir. Ve genişletme metotlarının ilk parametresi hangi veri tipi ile ilgili ise this anahtar sözcüğü ile belirtilmelidir.

Örnek:

Sınıfımız:

namespace CSharp3_0Features
{
 static class MyExtensionMethod
 {
 public static string Reverse(this string str)
 {
 string s = "";
 for (int i = str.Length-1; i >= 0; i--)
 {
 s += str[i];
 }
 return s;
 }
public static string SondanAl(this string str, int index)
 {
 return str.Substring(str.Length - index);
 }
 }
}

Kodumuz:

string s = "Sema";
Console.WriteLine(s.Reverse());
Console.WriteLine(s.SondanAl(3));

Sonraki notlarımda LINQ konusuna yer vereceğim.