أنواع القيم القابلة للـ Null
جزء من قسم Logic & Flow في رحلة C# على Coddy. الدرس 32 من 66.
في لغة C#، لا يمكن لأنواع القيم (value types) مثل int و float و bool أن تحمل قيم null بشكل طبيعي. تسمح أنواع القيم القابلة للإلغاء (Nullable value types) لهذه الأنواع بتمثيل إما قيمة أو null.
صرّح عن int عادي:
int regularNumber = 10;قم بالتصريح عن int قابل للقيمة null باستخدام الصيغة ?:
int? nullableNumber = 20;تعيين null لنوع يقبل القيمة null:
nullableNumber = null;بعد تنفيذ الكود أعلاه، لا يحتوي nullableNumber على أي قيمة (null).
تحقق مما إذا كان النوع القابل للإلغاء (nullable type) يحتوي على قيمة:
if (nullableNumber.HasValue)
{
Console.WriteLine("Value is: " + nullableNumber.Value);
}
else
{
Console.WriteLine("No value");
}يمكنك أيضاً استخدام عامل دمج القيم الخالية (null-coalescing operator) لتوفير قيمة افتراضية:
int definiteNumber = nullableNumber ?? 0;التحدي
سهلقم بإنشاء دالة باسم ProcessNullableAge تقوم بما يلي:
- تأخذ بارامتر من نوع int قابل للقيمة null يسمى
age - تتحقق مما إذا كان العمر يحتوي على قيمة
- إذا كان يحتوي على قيمة، تطبع "Age is: X years" (حيث X هي القيمة)
- إذا لم يكن يحتوي على قيمة، تطبع "Age not provided"
- تعيد قيمة العمر إذا كانت موجودة، وإلا تعيد 0
جرّب بنفسك
using System;
class Program
{
// قم بتنفيذ طريقة ProcessNullableAge هنا
static void Main(string[] args)
{
string input = Console.ReadLine();
int? age = null;
if (input != "null")
{
age = int.Parse(input);
}
int result = ProcessNullableAge(age);
Console.WriteLine("Returned value: " + result);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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تدرّب بنفسك: مترجم C# عبر الإنترنت