Null Checking Patterns
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 33 / 66.
Null kontrolü, dayanıklı C# kodu yazmanın temel bir parçasıdır. Null değerleri güvenli bir şekilde kontrol etmek için kullanabileceğiniz birkaç desen vardır.
Gelin bazı yaygın null kontrol desenlerini inceleyelim:
İlk olarak, temel if-null kontrolü:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Bir diğer yaygın desen, null olabilecek nesnelerin üyelerine güvenli bir şekilde erişen null-koşullu operatördür (?.):
string name = null;
int? length = name?.Length; // length null olacaktır
Null birleştirme operatörü (??), bir ifade null olduğunda varsayılan bir değer sağlar:
string name = null;
string displayName = name ?? "Unknown"; // displayName "Unknown" olacaktır
Daha karmaşık senaryolar için bu desenleri zincirleyebilirsiniz:
string name = null;
int length = (name ?? "").Length; // length 0 olacaktır
string.IsNullOrWhiteSpace() yöntemi, bir dizenin null, boş veya yalnızca boşluk karakterlerinden oluşup oluşmadığını tek bir çağrıda kontrol etmenin kullanışlı bir yoludur:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Bu, özellikle null, boş dizeler ve yalnızca boşluktan oluşan dizeleri aynı şekilde işlemeniz gerektiğinde yararlıdır. Örneğin:
string name1 = null;
string name2 = "";
string name3 = " ";
// Üçü de mesajı yazdıracaktır
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() metodunun yalın bir null kontrolünden farklı olduğuna dikkat edin; bu metot aynı zamanda boş dizeleri ve yalnızca boşluk, sekme veya diğer boşluk karakterlerini içeren dizeleri de yakalar.
Görev
KolayuserName adında bir dize (string) parametresi alan processUserName adında bir metot oluşturun. Metot şunları yapmalıdır:
- Eğer
userNamenull ise, "No user provided" döndürün - Eğer
userNameboşsa veya sadece boşluktan oluşuyorsa, "Invalid username" döndürün - Aksi takdirde, [userName] gerçek kullanıcı adı olmak üzere "Welcome, [userName]!" döndürün
Uygun null kontrol desenlerini 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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety