أنماط التحقق من الـ Null
جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 33 من 66.
يُعدّ التحقق من null جزءًا أساسيًا من كتابة تعليمات برمجية متينة بلغة C#. توجد عدة أنماط يمكنك استخدامها للتحقق من قيم null بأمان.
لنستكشف بعض الأنماط الشائعة للتحقق من null:
أولًا، التحقّق الأساسي من كون القيمة null:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
نمط شائع آخر هو العامل الشرطي للقيمة null (?.)، الذي يصل بأمان إلى أعضاء الكائنات التي قد تكون null:
string name = null;
int? length = name?.Length; // length سيكون null
يوفّر عامل الدمج مع null (??) قيمة افتراضية عندما يكون التعبير null:
string name = null;
string displayName = name ?? "Unknown"; // displayName سيكون "Unknown"
يمكنك أيضًا ربط هذه الأنماط معًا للتعامل مع سيناريوهات أكثر تعقيدًا:
string name = null;
int length = (name ?? "").Length; // length سيكون 0
تُعدّ الطريقة string.IsNullOrWhiteSpace() وسيلة ملائمة للتحقق مما إذا كانت سلسلة نصية هي null أو فارغة أو تحتوي فقط على أحرف whitespace: كل ذلك في استدعاء واحد:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
يكون هذا مفيدًا بشكل خاص عندما تحتاج إلى التعامل مع null والسلاسل النصية الفارغة والسلاسل النصية التي تحتوي على whitespace فقط بالطريقة نفسها. على سبيل المثال:
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 فقط. فهو يلتقط أيضًا السلاسل النصية الفارغة والسلاسل التي تحتوي فقط على مسافات أو علامات تبويب أو أحرف whitespace أخرى.
التحدي
سهلأنشئ أسلوبًا يسمى processUserName يأخذ معلمة من النوع string. يجب أن يقوم الأسلوب بما يلي:
- إذا كانت
userNameتساوي null، فأعد "No user provided" - إذا كانت
userNameفارغة أو تحتوي على whitespace فقط، فأعد "Invalid username" - بخلاف ذلك، أعد "Welcome, [userName]!" حيث تكون [userName] هي اسم المستخدم الفعلي
تذكّر استخدام أنماط مناسبة للتحقق من null.
جرّب بنفسك
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// اكتب الكود الخاص بك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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تدرّب بنفسك: مترجم C# عبر الإنترنت