Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

C# Null-Koşullu Operatörü

Gerald Versluis
13m 26s

Gerald Versluis, videolarından birinde örnek kodundaki soru işareti (?) ile ilgili bir soru ile karşılaştı. Bu, onu C#'taki null-koşullu operatör ile ilgili detaylı bir video oluşturmaya yönlendirdi. C#'te ?. veya ?[ ] ne yapar diye hiç merak ettiyseniz, Gerald'ın videosu bunu net bir şekilde anlamak için harika bir kaynaktır. Açıklamasını adım adım inceleyelim.

Belgeler Sayfası ile Hızlı Açıklama

Gerald, üye erişim operatörleri ve ifadeleriyle ilgili resmi Microsoft belgelerine atıfta bulunarak başlıyor. C# 6'da tanıtılan null-koşullu operatörle ilgili bölümü vurguluyor. Kaydı yaptığı dönemde, C# 9 en son sürümdü ve ufukta C# 10 vardı.

Gerald, a null ise, a?.x veya a?[index] kullandığınızda, tüm ifadenin NullReferenceException atmadan null olarak değerlendirdiğini açıklar. Aksi takdirde, değeri normal şekilde alır.

Belgeler yararlı olsa da, Gerald uygulamalı örnekleri tercih eder, bu yüzden etkileşimli bir kodlama ortamına geçer.

try.dot.net Üzerinden Örnek

Demonstrasyon için Gerald, etkileşimli bir C# ortamı olan try.dot.net'e geçiş yapar. Bu aracın Chrome'da çalıştığını ve kullanıcılara C# kodunu doğrudan bir tarayıcıda çalıştırma olanağı tanıdığını belirtir.

Kısaca try.dot.net'te önceden yüklenmiş olan varsayılan Fibonacci dizisi örneğini gösterir ve ardından null-koşullu operatöre odaklanan yeni bir örneğe başlamak için temizler.

Null-Koşullu Operatörler Açıklandı

Gerald, aşağıdaki özelliklere sahip basit bir Person sınıfı oluşturur:

public class Person
{
    // The Name property of the Person
    public string Name { get; set; }

    // A reference to another Person object representing the partner
    public Person Partner { get; set; }

    // An array representing the Person's hobbies
    public string[] Hobbies { get; set; }
}
public class Person
{
    // The Name property of the Person
    public string Name { get; set; }

    // A reference to another Person object representing the partner
    public Person Partner { get; set; }

    // An array representing the Person's hobbies
    public string[] Hobbies { get; set; }
}

O, bir Person nesnesini null olarak başlatır:

// Initialize a Person object as null
Person person = null;

// Attempting to access a property of a null object will throw a NullReferenceException
Console.WriteLine(person.Name);
// Initialize a Person object as null
Person person = null;

// Attempting to access a property of a null object will throw a NullReferenceException
Console.WriteLine(person.Name);

Bu kodu çalıştırmak, person null olduğu için NullReferenceException atar. Bunu önlemek için geliştiriciler genellikle özelliklere erişmeden önce bir null kontrolü ekler.

// Check if the person object is not null before accessing its properties
if (person != null)
{
    Console.WriteLine(person.Name);
}
// Check if the person object is not null before accessing its properties
if (person != null)
{
    Console.WriteLine(person.Name);
}

Bu işe yarasa da fazladan kod satırları ekler. Gerald, null koşullu operatörün bunu nasıl basitleştirdiğini açıklar:

// Using the null-conditional operator to safely access the Name property
Console.WriteLine(person?.Name);
// Using the null-conditional operator to safely access the Name property
Console.WriteLine(person?.Name);

Şimdi, person null ise, ifade çökmeden yalnızca null döner.

Özellikler Üzerinde Null-Koşullu Operatör

Gerald, bir Person nesnesi kurarak örneği genişletir:

// Create a new Person object
Person person = new Person { Name = "Gerald" };

// Access the Name property safely
Console.WriteLine(person?.Name);
// Create a new Person object
Person person = new Person { Name = "Gerald" };

// Access the Name property safely
Console.WriteLine(person?.Name);

person null değil olduğu için, doğru bir şekilde "Gerald" yazdırır.

Sonra, iç içe bir örnek gösterir:

// Safely access the Name property of the Partner object
Console.WriteLine(person?.Partner?.Name);
// Safely access the Name property of the Partner object
Console.WriteLine(person?.Partner?.Name);

person.Partner null ise, tüm ifade bir istisna atmaktansa null olarak değerlendirilir. Bu gereksiz if koşullarından kaçınır.

Null-Koşullu Operatörlerin Zincirlenmesi

Gerald, null-koşullu operatörlerin zincirlenebileceğini ve bu sayede derinlemesine iç içe geçmiş nesnelerle çalışırken kodun daha temiz hâle geldiğini açıklar. Çok sayıda null kontrolü yazmak yerine, şunları kullanabilirsiniz.

// Chain null-conditional operators to safely access nested objects
Console.WriteLine(person?.Partner?.Name);
// Chain null-conditional operators to safely access nested objects
Console.WriteLine(person?.Partner?.Name);

person veya person.Partner null ise, sonuç null olur ve çalışma zamanı hatalarını önler.

Null-Koşullu Operatörler Dizilerde

Gerald tartışmayı diziler ve koleksiyonlar üzerine genişletir. Person sınıfına bir Hobbies dizisi ekler ve elemanlara güvenli bir şekilde erişmenin nasıl yapılacağını gösterir:

// Safely access the first element of the Hobbies array
Console.WriteLine(person?.Hobbies?[0]);
// Safely access the first element of the Hobbies array
Console.WriteLine(person?.Hobbies?[0]);

Burada, person veya Hobbies null ise, ifade bir istisna yaratmak yerine null olarak değerlendirilir.

Sonuç

Gerald'ın videosu, C#'ta null-koşullu operatör hakkında derinlemesine bir bakış sunuyor. ?. ve ?[ ] kullanarak, geliştiriciler NullReferenceException'dan kaçınan daha temiz ve daha güvenli kod yazabilirler. Özelliklerle, iç içe geçmiş nesnelerle veya dizilerle uğraşırken, null-koşullu operatör kodu daha özlü ve okunabilir hâle getirir.

Tam bir gösterim için, pratik örneklerle her şeyi açıkladığı Gerald Versluis'un videosunu mutlaka izleyin!

Hero Worlddot related to C# Null-Koşullu Operatörü
Hero Affiliate related to C# Null-Koşullu Operatörü

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara