Null Kontrolü Desenleri
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 33 / 66.
Null denetimi, sağlam C# kodu yazmanın temel bir parçasıdır. null değerlerini güvenli bir şekilde denetlemek için kullanabileceğin çeşitli kalıplar vardır.
Yaygın null denetimi kalıplarını inceleyelim:
İlk olarak, temel null kontrolü:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Bir diğer yaygın desen, potansiyel olarak null olan nesnelerin üyelerine güvenli bir şekilde erişen null koşullu operatördür (?.):
string name = null;
int? length = name?.Length; // length null olacak
Null birleştirme işleci (??), bir ifade null olduğunda varsayılan bir değer sağlar:
string name = null;
string displayName = name ?? "Unknown"; // displayName "Unknown" olacak
Daha karmaşık senaryolar için bu kalıpları birbirine de zincirleyebilirsin:
string name = null;
int length = (name ?? "").Length; // uzunluk 0 olacak
string.IsNullOrWhiteSpace() yöntemi, bir dizenin null, boş veya yalnızca boşluk karakterleri içerip içermediğini tek bir çağrıyla kontrol etmenin kullanışlı bir yoludur:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Bu, null değerlerini, boş dizeleri ve yalnızca boşluk karakterlerinden oluşan dizeleri aynı şekilde ele almanız gerektiğinde özellikle kullanışlıdır. Örneğin:
string name1 = null;
string name2 = "";
string name3 = " ";
// Üçü de mesajı yazdıracak
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");
string.IsNullOrWhiteSpace() ifadesinin basit bir null denetiminden farklı olduğunu unutma. Bu ifade ayrıca boş dizeleri ve yalnızca boşluk, sekme veya diğer boşluk karakterlerini içeren dizeleri de yakalar.
Görev
KolayprocessUserName dizesini alan userName adlı bir metot oluşturun. Metot şunları yapmalıdır:
userNamenull ise "No user provided" döndürmelidiruserNameboşsa veya yalnızca boşluk karakterlerinden oluşuyorsa "Invalid username" döndürmelidir- Aksi takdirde, [userName] gerçek kullanıcı adı olmak üzere "Welcome, [userName]!" döndürmelidir
Uygun null denetimi kalıplarını kullanmayı unutmayın.
Kendin dene
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Kodunuzu buraya yazın
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null GüvenliğiKendi başına pratik yap: Online C# derleyicisi