C# 6.0 sürümü ile birçok yeni özelliği kullanıma sundu. Bu yeni özelliklerden biride Null Propagation Operatörüdür. C# dilinin önceki sürümlerinde, bir nesneyi veya özelliğini kullanmadan önce her zaman bir null denetim için bir if koşulu yazmamız gerekiyordu. Şimdi C# 6.0 ile birlikte bir nesne (object) referans’ının null değerini kontrol etmesini sağlayan Null-Propagation Operator’u (?.) kullanıma sunulmuştur. Bu operatör nesne null ise null değerini döndürür. Null Propagation operatörü özelliğini çağırmadan önce instance sonra bir soru işareti (?) koyarak artık null yapılabilir türler gibi kullanılabilir. Sonuç olarak artık Null değerleri kontrol etmek için ek olarak if ifadeleri yazmamıza gerek yoktur.
C# dilinin önceki sürümlerinde, aşağıda gösterildiği gibi, bir nesneyi veya onun özelliğini kullanmadan önce her zaman null değerleri açıkça kontrol etmeniz gerekiyordu:
if (Employee.Name == null)
{
Console.WriteLine("No Employee name provided");
}
Aynısı, C# 6’daki Null Propagation Operatörü kullanılarak bir satıra dönüştürülebilir.
Console.WriteLine(Employee?.Name ?? "Employee name sağlanamadı.");
C# Null Propagation Operatörü Örneği
Senaryomuza göre “Student” adlı bir sınıfmız (class) olsun bu sınıfın “studentdetails” adlı özelliği (property) olsun bu özelliğin tipi ise bir “Detail” adlı bir başka sınıf olsun. Bu yapı üzerinden “Address” özelliğini kullanarak yazdırma işlemi gerçekleştirelim.
if (student != null && student.studentdetails != null)
{
Console.WriteLine(student.studentdetails.Address);
}
else
{
Console.WriteLine("No Address");
}
Gördüğümüz gibi, null
-reference exception’dan kaçınmak için, nesne olarak null referansa sahip olabilecekleri için student ve student.studentdetails için null değeri kontrol ettik. Yukarıda ki kodu Null Propagation Operatörü kullanarak şu şekilde yazabiliriz.
Console.WriteLine(student?.studentdetails?.Address ?? "No Address");