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

Diğer Kategoriler

C# Null Birleşim Operatörünü Anlama

Gerald Versluis
12m 43s

C#'taki null birleştirme operatörü (??) geliştiricilerin null kontrol mantığını basitleştirerek kodun kısalığını ve okunabilirliğini artırır. Uzun if-else koşulları yazmak yerine, bu operatör, null ile karşılaşıldığında yedek değerler atamak için özlü bir yol sağlar. Bu makalede, Gerald Versluis'in videosunu takip ederek null bağdaşlaştırma operatörünü detaylı bir şekilde inceleyeceğiz, "C#'ta Null Bağdaşlaştırma Operatörünü (?? ve ??=)**](https://www.youtube.com/watch?v=aIp0jUr6A24&list=PLfbOp004UaYWWOZFZ585BCeRvTduLt9Fm&index=11)." Videonun ana bölümlerini parçalayacağız ve Gerald'ın bu faydalı C# özelliğini nasıl gösterdiğini analiz edeceğiz.

Giriş

Videonun başında Gerald, null bağdaşlaştırma operatörünü C#'ta null kontrolü için gereken kod satırlarını önemli ölçüde azaltan güçlü bir özellik olarak sunuyor. Bu operatörün koşullu kontrolleri basitleştirdiğini ve kodu daha okunabilir hale getirdiğini vurgular. Faydalarını göstermek için, Gerald, null bağdaşlaştırma operatörünün çeşitli kullanım senaryolarını uyguladığı ve açıkladığı örnek bir uygulama üzerinde çalışıyor.

Örnek Uygulama Taslağı

Gerald, basit bir konsol uygulaması kurarak başlıyor. Önceki videolarda, try.dot.net sitesini demonstrasyonlar için kullandığını ancak sürüm sınırlamaları (sadece C# 7'yi destekliyor) nedeniyle Visual Studio for Mac'e geçiş yaptığını belirtiyor. Örneklerin Windows için Visual Studio'da da çalışacağını garanti ediyor.

Demonstrasyonu hazırlamak için, Gerald, tek bir Name özelliği olan temel bir Person sınıfı oluşturur:

public class Person 
{
    public string Name { get; set; }
}
public class Person 
{
    public string Name { get; set; }
}

Ardından, bu sınıfın bir örneğini başlatıyor ve null bağdaşlaştırma operatörünün gerçek senaryolarda nasıl çalıştığını göstermek için kullanıyor.

Null Kontrolünü Null Bağdaşlaştırma Operatörü ile Değiştirin (??)

Gerald şimdi, null bağdaşlaştırma operatörünün (??) null kontrol mantığını nasıl basitleştirebileceğini gösteriyor. O, Name özelliğine null atar ve ardından alternatif bir değer sağlamak için ?? kullanır:

var name = person.Name ?? "Gerald";
var name = person.Name ?? "Gerald";

Bu operatör öncesinde, geliştiricilerin bir if deyimi kullandıklarını açıklar:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}
string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

?? kullanarak, bu mantık tek bir satıra indirgenir. person.Name null olduğunda, "Gerald" atanır; aksi takdirde, person.Name değerini korur. Programı çalıştırır ve çıktının doğru olduğunu doğrular.

Null Birleştirmeyi İstisna Fırlatmak İçin Kullanın

Ardından Gerald başka bir kullanım durumunu araştırır: null birleştirme operatörünü kullanarak istisna fırlatmak. Alternatif bir değer sağlamak yerine, null ile karşılaşıldığında nasıl bir istisna atılacağını gösterir:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Bu özellik, özellikle null'a izin verilmemesi gereken metot parametreleri veya özelliklerle çalışırken yararlıdır. Bu özelliğin, proje ayarlarına bağlı olarak C# 7 veya 8'de tanıtıldığını açıklar. Kodun person.Name için null bir değer ile çalıştırılması, istenmeyen null başvurularını etkin bir şekilde önleyen bir ArgumentNullException ile sonuçlanır.

Null Birleştirme Bileşik Atama (??=)

Gerald, şimdi daha da pratik bir yol sunan null birleştirme bileşik atama (??=) operatörünü tartışıyor. Şöyle yazmak yerine:

if (person.Name == null)
{
    person.Name = "Gerald";
}
if (person.Name == null)
{
    person.Name = "Gerald";
}

Bunu şöyle basitleştirir:

person.Name ??= "Gerald";
person.Name ??= "Gerald";

??= operatörünün, sadece sol taraf işleci null ise belirtilen değeri atacağını açıklar. Eğer person.Name zaten bir değere sahipse, değişmeden kalır. Bu operatör, özellikle alanları başlatırken veya değişkenlerin daima null kalmamasını sağlamak için yararlıdır.

Null Koşullu Operatör ile Birleştirme

Son bölümde, Gerald null birleştirme operatörünün null koşullu operatörü (?.) ile nasıl birleştirilebileceğini göstermektedir. Null koşullu operatör, bir NullReferenceException'a neden olmadan özelliklere güvenli erişim sağlar. Bir örnek sunar:

var length = person?.Name?.Length ?? 0;
var length = person?.Name?.Length ?? 0;

Gerald, bunun person veya Name null olduğunda, sonucun bir istisna atmaktan ziyade 0'a varsayılmasını sağladığını açıklar. Bu kombinasyon, nullable referans türleri veya karmaşık nesne hiyerarşileri ile çalışırken faydalıdır.

Sonuç

Video boyunca Gerald Versluis, null birleştirme operatörünün (??) ve null birleştirme bileşik atamasının (??=) gücünü etkili bir şekilde açıklar. Bu operatörlerin geleneksel null kontrollerinin yerini alarak kodu daha özlü ve okunabilir hale getirdiğini gösterir. Bu özellikler kullanılarak geliştiriciler daha temiz ve daha verimli C# uygulamaları yazabilir.

Bu kavramları uygulamada görmek ilginizi çekiyorsa, "C# Null Birleştirme Operatörünü Anlama (?? ve ??=)" konusunda Gerald Versluis'in tam videosunu inceleyin.

Hero Worlddot related to C# Null Birleşim Operatörünü Anlama
Hero Affiliate related to C# Null Birleşim Operatörünü Anlama

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