أنماط التحقق من الـ 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-conditional operator (?.))، والذي يصل بأمان إلى أعضاء الكائنات التي قد تكون 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() وسيلة مريحة للتحقق مما إذا كانت السلسلة النصية (string) قيمتها null، أو فارغة، أو تحتوي فقط على مسافات بيضاء - كل ذلك في استدعاء واحد:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
هذا مفيد بشكل خاص عندما تحتاج إلى التعامل مع القيم الفارغة (null)، والسلاسل النصية الفارغة، والسلاسل النصية التي تحتوي على مسافات بيضاء فقط بنفس الطريقة. على سبيل المثال:
string name1 = null;
string name2 = "";
string name3 = " ";
// ستطبع الحالات الثلاث هذه الرسالة
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() يختلف عن التحقق البسيط من القيمة الفارغة (null check) — فهو يلتقط أيضاً السلاسل النصية الفارغة والسلاسل التي تحتوي فقط على مسافات، أو علامات جدولة (tabs)، أو أحرف مسافات بيضاء أخرى.
التحدي
سهلأنشئ دالة تسمى processUserName تأخذ معاملًا نصيًا userName. يجب أن تقوم الدالة بما يلي:
- إذا كان
userNameهو null، فقم بإرجاع "No user provided" - إذا كان
userNameفارغًا أو يحتوي على مسافات بيضاء فقط، فقم بإرجاع "Invalid username" - بخلاف ذلك، قم بإرجاع "Welcome, [userName]!" حيث [userName] هو اسم المستخدم الفعلي
تذكر استخدام أنماط التحقق من القيم الفارغة (null checking) المناسبة.
جرّب بنفسك
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