أنماط التحقق من الـ Null
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 33 من 66.
يُعد التحقق من القيم الفارغة (Null checking) جزءاً أساسياً من كتابة كود C# قوي. هناك عدة أنماط يمكنك استخدامها للتحقق من القيم الفارغة بأمان.
لنستكشف بعض الأنماط الشائعة للتحقق من القيمة الفارغة (null):
أولاً، التحقق الأساسي من القيمة الفارغة (if-null):
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
هناك نمط شائع آخر وهو عامل الشرط الصفري (?.)، الذي يتيح الوصول بأمان إلى أعضاء الكائنات التي قد تكون قيمتها null:
string name = null;
int? length = name?.Length; // length ستكون null
يوفر عامل دمج القيم الفارغة (??) قيمة افتراضية عندما يكون التعبير فارغاً (null):
string name = null;
string displayName = name ?? "Unknown"; // ستكون قيمة displayName هي "Unknown"
يمكنك أيضًا ربط هذه الأنماط معًا لسيناريوهات أكثر تعقيدًا:
string name = null;
int length = (name ?? "").Length; // سيكون الطول 0
تتحقق الطريقة string.IsNullOrWhiteSpace() مما إذا كانت السلسلة النصية null، أو فارغة، أو تحتوي فقط على أحرف مسافات بيضاء. إنها طريقة ملائمة للتحقق من صحة إدخال السلسلة النصية في استدعاء واحد:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("No name provided"); // سيتم طباعة هذا
}
string blank = " ";
if (string.IsNullOrWhiteSpace(blank))
{
Console.WriteLine("Blank name provided"); // سيتم طباعة هذا أيضاً
}
استخدم string.IsNullOrWhiteSpace() عندما تريد التعامل مع null، والسلاسل النصية الفارغة، والسلاسل التي تحتوي على مسافات بيضاء فقط كمدخلات غير صالحة متكافئة.
التحدي
سهلأنشئ طريقة تسمى processUserName تأخذ معاملًا نصيًا (string parameter) باسم userName. يجب أن تقوم الطريقة بما يلي:
- إذا كان
userNameهو null، فقم بإرجاع "No user provided" - إذا كان
userNameفارغًا أو يحتوي على مسافات بيضاء فقط، فقم بإرجاع "Invalid username" - خلاف ذلك، قم بإرجاع "Welcome, [userName]!" حيث أن [userName] هو اسم المستخدم الفعلي
تذكر استخدام أنماط التحقق من القيم الفارغة (null checking) المناسبة.
ورقة مرجعية
استخدم == null للتحقق الأساسي من القيمة الفارغة (null):
if (name == null)
{
Console.WriteLine("Name is null");
}استخدم عامل الشرط الصفري (null-conditional operator) ?. للوصول إلى الأعضاء بأمان:
int? length = name?.Length; // سيكون length فارغاً (null) إذا كان name فارغاً (null)استخدم عامل دمج القيم الصفرية (null-coalescing operator) ?? لتوفير قيم افتراضية:
string displayName = name ?? "Unknown";استخدم string.IsNullOrWhiteSpace() للتحقق من السلاسل النصية الفارغة (null)، أو الفارغة تماماً، أو التي تحتوي على مسافات بيضاء فقط:
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}ربط العوامل (Chain operators) للسيناريوهات المعقدة:
int length = (name ?? "").Length; // سيكون length مساوياً لـ 0 إذا كان name فارغاً (null)جرّب بنفسك
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// اكتب كودك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null