Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أساسيات الـ Null Reference

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 31 من 66.

في لغة C#، يمثل مرجع null غياب كائن ما. إن فهم كيفية التعامل مع قيم null أمر ضروري لكتابة كود برمجى قوي.

قم بالتصريح عن متغير من نوع مرجعي (مثل string) بدون تعيين قيمة:

string name = null;

المتغير 'name' يحمل الآن مرجع null، مما يعني أنه لا يشير إلى أي كائن في الذاكرة.

محاولة استخدام مرجع فارغ (null) دون التحقق منه قد تؤدي إلى حدوث أخطاء وقت التشغيل:

string name = null;
// سيؤدي هذا إلى حدوث NullReferenceException
int length = name.Length;

يمكنك التحقق مما إذا كان المرجع فارغاً (null) قبل استخدامه:

string name = null;
if (name != null)
{
    // من الآمن استخدام name هنا
    int length = name.Length;
}

يمكنك أيضاً تعيين قيمة غير فارغة (non-null) للمتغير:

string name = null;
name = "John";
// الآن من الآمن استخدام name
int length = name.Length; // length ستكون 4
challenge icon

التحدي

سهل

أنشئ دالة (method) تسمى ProcessName تستقبل بارامتر نصي (string) يسمى name. يجب أن تقوم الدالة بما يلي:

  1. التحقق مما إذا كان الاسم null
  2. إذا كان الاسم null، اطبع: "Name is null"
  3. إذا لم يكن الاسم null، اطبع: "Name length is X" (حيث X هو طول الاسم)

ورقة مرجعية

يمثل المرجع الفارغ (null reference) غياب كائن في لغة C#.

قم بالتصريح عن متغير من نوع مرجعي (reference type) بقيمة null:

string name = null;

يؤدي استخدام المراجع الفارغة (null references) دون التحقق منها إلى حدوث أخطاء وقت التشغيل (runtime errors):

string name = null;
// سيؤدي هذا إلى رمي NullReferenceException
int length = name.Length;

تحقق من القيمة الفارغة (null) قبل الاستخدام:

string name = null;
if (name != null)
{
    // من الآمن استخدام name هنا
    int length = name.Length;
}

قم بتعيين قيمة غير فارغة لجعلها آمنة للاستخدام:

string name = null;
name = "John";
int length = name.Length; // ستكون قيمة length هي 4

جرّب بنفسك

using System;

class Program
{
    public static void ProcessName(string name)
    {
        // اكتب الكود الخاص بك هنا
    }
    
    static void Main(string[] args)
    {
        string input = Console.ReadLine();
        
        // تحويل النص "null" إلى قيمة null فعلية
        string name = input.ToLower() == "null" ? null : input;
        
        ProcessName(name);
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow