C# 6.0 ile gelen 15 yeni özellik (1.Bölüm)

C# 6.0 ile gelen 15 yeni özelliği inceleyeceğimiz bu makale 3 bölümden oluşmaktadır. Her bölümde 5’er özellik örneklerle beraber anlatılacaktır.

C# dilinin ilk versiyonu 2002 yılında ve daha sonra 2005 yılında ikinci versiyonu yayınlandı. 2007 yılına geldiğimizde ise Linq, lamda expression, implicit typing, query syntax, var keyword ve 2010 yılında 4. sürümle beraber dynamic keyword ve dynamic language runtime ile tanıştık. 2012 yılında 5. versiyon yayınlandı. Bu versiyonda ise async ve await keywordleri ile tanıştık. Önceki versiyonlarla bu sürümü karşılaştırdığımızda çok etkili değişikliklerin olmadığını görüyoruz. Aslında bu normal bir şey çünkü C# dili 13 yaşının üzerinde ve geçen yıllar içersinde gerekli olan önemli özellikler zaten eklendi. Şimdi C# 6.0 ile gelen 15 güzel özelliği inceleyelim.

1. Auto-Property Initializers

Önceki versiyonlarda class içerisinde ki bir property’e default bir değer vermek istediğimizde bunu bir constructor ile yapıyorduk. C# 6.0 Auto-property initializers özelliği default değeri property’nin bir parçası olarak verme imkanı sağlıyor.

Önceki sürümlerde

class Program
{
public Program()
{
MyProperty = 10;
}

public int MyProperty { get; set; }
}

Yeni sürümde

class Program
{
public int MyProperty { get; set; } = 10
}

1. Static kullanımı

Static bir metodu çağırmak için onu nesne ile temsil etmeye gerek yoktur sadece tip adı nokta ve static metod adını yazdıktan sonra parantezler açılır ve parametreler girilir.
Bu özellik class adını belirtmeye gerek kalmadan direk olarak class içerisinde static metodlara erişmemize imkan sağlar. Genellikle bir değeri int olarak çevirmek istediğimiz de Convert.ToInt32 metodunu kullanırız. Artık sadece ToInt32 yazmak yeterli.

Eski sürümde

 

namespace TestApp
 {
 class Program
 {
 static void Main(string[] args)
 {
 var value = Convert.ToInt32("2015");
 }
 }
 }

Yeni Sürümde

 

using Convert;

namespace TestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var value = ToInt32("2015");
        }
    }
}

Başka bir örnek

 

using System.Console;
using System.Math;

class Program
{
    static void Main()
    {
        WriteLine(Sqrt(25));
    }
}

3. Dictionary Initializers

C# 3 versiyonu yayınladıktan sonra dictionary ve listeler gibi koleksiyonlarda süslü parantezler içerisinde key value çiftini kullanmaya başladık. C# 6.0 ile baraber aynı kullanımı köşeli pazantezler içerisinde de gerçekleştirebiliyoruz.

Eski sürüm 

Dictionary dict = new Dictionary<int, string>;
{
    {1, "Apple" },
    {2, "Microsoft" },
    {3, "IBM" }
};

Yeni sürüm 

Dictionary dict = new Dictionary<int, string>;
{
    [1] = "Apple",
    [2] = "Microsoft",
    [3] = "IBM"
};

4. Auto-propertilerde sadece get kullanımı

C# ‘ın önceki sürümlerinde otomatik implemente edilen propertileri kullandığımızda, mutlaka get ve set ifadelerini de kullanmak zorundaydık. Şayet property’i set etmeyecekseniz private ekini koyabilirdiniz. C#  6.0 ile bu ifadeyi direk çıkarabilir ve propertyi readonly yapabilirsiniz.

 

Eski sürüm 

public int MyProperty { get; private set; }

Yeni sürüm 

public int MyProperty { get; }

5. Null-şartlı operatörleri (?.)

C# 6.0 ile gelen gerçekten güzel bir özellik. Uygulamalarımızda genellik if şartını kullanırız. Artık tek bir satırda, değerin null olup olmadığını kontrol edip şayet null değilse işlemimize devam edebileceğiz ayrıca genelde karşılaştığımız sinir bozucu NullReferenceException hatasından da kurtuluyoruz.

 

Eski sürüm 

public string Truncate(string value, int length)
{
    string result = value;
    if (value != null)
    {
        result = value.Substring(0, value.Length - 1);
    }

    return result;
}

Yeni sürüm 

public string Truncate(string value, int length)
{
    return value?.Substring(0, value.Length - 1);
}

Diğer örnekler 

int? length = musteriler?.Length; // null if musteriler is null
Customer first = musteriler?[0]; // null if musteriler is null 
int length = musteriler?.Length ?? 0; // 0 if musteriler is null

2. ve 3. bölüm hazır olduğunda link vereceğim.

Muavenet

Web teknolojilerine merak salmış bir bilgisayar mühendisinin yazıları

Bir cevap yazın

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