Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Gerald Versluis
12m 43s
C#'deki null birleştirme operatörü (??), geliştiricilerin null kontrolü mantığını basitleştirmesine olanak tanır, bu da kodun karmaşıklığını azaltır ve okunabilirliği 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 sunar. Bu makalede, Gerald Versluis'in "C# Null Birleştirme Operatörünü (?? Anlamak ve ??=)." Videonun önemli bölümlerini inceleyeceğiz ve Gerald'in bu kullanışlı C# özelliğini nasıl gösterdiğini analiz edeceğiz.
Videonun başında Gerald, null birleşim operatörünü, C#'ta null kontrolü için gereken kod satırlarını önemli ölçüde azaltan güçlü bir özellik olarak tanıtıyor. Bu operatörün, koşullu kontrolleri basitleştirip kodu daha okunabilir hale getirdiğini vurguluyor. Faydalarını göstermek için Gerald, null birleştirme operatörünün çeşitli kullanım durumlarını uyguladığı ve açıkladığı bir örnek uygulama üzerinden ilerliyor.
Gerald, basit bir konsol uygulaması kurarak başlar. Önceki videolarda, demolar için try.dot.net web sitesini kullandığını belirtiyor, ancak sürüm sınırlamaları (yalnızca C# 7'yi destekliyor) nedeniyle Visual Studio for Mac'e geçiyor. Görsellerin Visual Studio for Windows üzerinde de çalışacağını garanti eder.
Demoyu hazırlamak için, Gerald tek bir Name özelliğine sahip temel bir Person sınıfı oluşturur:
public class Person
{
public string Name { get; set; }
}Public Class Person
Public Property Name As String
End ClassDaha sonra, bu sınıfın bir örneğini başlatır ve null birleştirme operatörünün gerçek dünya senaryolarında nasıl çalıştığını gösterir.
Gerald şimdi null kontrol mantığını basitleştirmek için null birleşim operatörü (??) kullanmanın nasıl mümkün olduğunu göstermektedir. Null değerini Name özelliğine atar ve ardından ?? kullanır yedek bir değer sağlamak için:
var name = person.Name ?? "Gerald";Dim name As String = If(person.Name, "Gerald")Gerald, bu operatörden önce, geliştiricilerin bir if ifadesi kullandıklarını açıklar:
string name;
if (person.Name == null)
{
name = "Gerald";
}
else
{
name = person.Name;
}Dim name As String
If person.Name Is Nothing Then
name = "Gerald"
Else
name = person.Name
End If?? 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 onaylar.
Sonra, Gerald başka bir kullanım durumunu inceliyor: null birleştirme operatörünü kullanarak istisnalar atmak. Yedek bir değer sağlamaktan ziyade, karşılaşılan null durumunda nasıl bir istisna atılacağını gösteriyor:
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");Dim name As String = If(person.Name, Throw New ArgumentNullException(NameOf(person.Name), "Name cannot be null"))Gerald, null'ün izin verilmemesi gereken yöntem parametreleri veya özelliklerle çalışırken bunun özellikle kullanışlı olduğunu vurgular. Bu özelliğin proje ayarlarına bağlı olarak C# 7 veya 8'de tanıtıldığını açıklıyor. person.Name için null bir değerle kodu çalıştırmak, ArgumentNullException sonucunu verir, bu da istenmeyen null referansları etkili bir şekilde önler.
Gerald, varsayılan değerler atamak için daha da etkili bir yol sağlayan null birliktelik bileşik atama (??=) operatörünü tartışmaya devam ediyor. Bunun yerine şöyle yazın:
if (person.Name == null)
{
person.Name = "Gerald";
}If person.Name Is Nothing Then
person.Name = "Gerald"
End IfBunu şöyle basitleştirir:
person.Name ??= "Gerald";person.Name = If(person.Name, "Gerald")Gerald, ??= operatörünün yalnızca sol taraftaki operand null olduğunda belirtilen değeri atadığını açıklar. person.Name zaten bir değere sahipse, değişmeden kalır. Bu operatör, özellikle alanları başlatmak veya değişkenlerin asla null kalmamasını sağlamak için kullanışlıdır.
Son bölümde, Gerald, null birleşim (coalescing) operatörünün, null koşullu operatör (?.) ile nasıl birleştirilebildiğini göstermektedir. Null koşullu operatör, bir NullReferenceException sebep olmadan özelliklere güvenli erişim sağlar. Örnek verir:
var length = person?.Name?.Length ?? 0;Dim length As Integer = If(person?.Name?.Length, 0)Gerald, person veya Name null ise, sonucun bir istisna fırlatmak yerine varsayılan olarak 0 olacağından emin olduğunu açıklar. Bu kombinasyon, null referans türleri veya karmaşık nesne hiyerarşileriyle çalışırken faydalıdır.
Video boyunca, Gerald Versluis, null birleştirme operatörünün (??) ve null birleştirme bileşik atama operatörünün (??=) gücünü etkili bir şekilde açıklıyor. Bu operatörlerin geleneksel null kontrollerini nasıl değiştirebileceğini, kodu daha özlü ve okunabilir hale getirdiğini gösteriyor. Bu özelliklerden yararlanarak geliştiriciler daha temiz ve daha verimli C# uygulamaları yazabilir.
Bu kavramların nasıl uygulandığını görmekle ilgileniyorsanız, Gerald Versluis'in "C# Null Birleştirme Operatörü (??) Anlama" konulu tam videosuna göz atın. and ??=).
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy