0Pricing
C# Academy · درس

المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)

استخدم المعاملات الاختيارية والوسائط المسمّاة لزيادة الوضوح؛ مرّر بالمرجع باستخدام ref؛ وأعِد قيمًا إضافية باستخدام out؛ ولاحظ أن معاملات in غير متاحة في C# 6.

المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات) درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

نظرة عامة على الدرس

الهدف: استخدم المعاملات الاختيارية والوسائط المُسمّاة لتحسين الوضوح؛ وافهم ref وout. ملاحظة: المعاملات in غير متاحة في C# 6.

المعاملات الاختيارية

أضف قيمًا افتراضية لتوفير تخصيص بسيط من دون إنشاء العديد من التحميلات الزائدة.

using System;

public static class Notifier
{
  // Optional parameter: suffix has a default value
  public static void Notify(string message, string suffix = "!")
  {
    Console.WriteLine(message + suffix);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Notifier.Notify("Saved");          // uses "!"
    Notifier.Notify("Warning", "!!");  // overrides default
  }
}

الوسائط المُسمّاة

تجعل الوسائط المُسمّاة الاستدعاءات موضحةً لذاتها، وتتيح إعادة ترتيبها بأمان.

using System;

public static class Greeter
{
  public static void Greet(string name, string prefix, int repeat)
  {
    for (int i = 0; i < repeat; i = i + 1)
    {
      Console.WriteLine(prefix + " " + name);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Named args improve readability and allow reordering at call site
    Greeter.Greet(name: "Ada", prefix: "Hello", repeat: 2);
    Greeter.Greet(repeat: 1, name: "Alan", prefix: "Hi");
  }
}

معامل ref

يمرّر ref متغيرًا بالمرجع؛ ويجب على المستدعي تهيئته أولًا.

using System;

public static class RefDemo
{
  public static void Increment(ref int n)
  {
    n = n + 1; // modifies caller's variable
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int value = 5;           // must be assigned before passing by ref
    RefDemo.Increment(ref value);
    Console.WriteLine("value = " + value); // 6
  }
}

معامل out

يتيح out للأسلوب إرجاع قيم إضافية عبر المعاملات؛ ويجب على الأسلوب إسناد قيم إليها.

using System;

public static class OutDemo
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;   // out must be assigned before return
      return false;
    }
    result = a / b;
    return true;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int r; // not required to be assigned before passing as out
    bool ok = OutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

حول "in" (C# 6)

ملاحظة: تصل معاملات in (للقراءة فقط بالمرجع) في إصدارات C# الأحدث. في C# 6 يمكنك:

  • التمرير حسب القيمة (نسخًا) للأنواع الصغيرة
  • استخدام ref فقط عند الحاجة إلى التعديل
  • جعل معاملات الأساليب للقراءة فقط وفقًا للعرف (لا تُعد إسناد قيمة إليها)

أساسيات ref مقابل out

تحقق سريعًا: أي عبارة عن ref وout صحيحة في C# 6؟

خلاصة

الخلاصة: استخدم المعاملات الاختيارية للقيم الافتراضية، والوسائط المُسمّاة للوضوح، وref لتعديل بيانات المستدعي، وout لإرجاع قيم إضافية. لا تدعم C# 6 معاملات in.

الأسئلة الشائعة

هل درس «المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)» مجاني؟

نعم — نص درس «المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)»؟

استخدم المعاملات الاختيارية والوسائط المسمّاة لزيادة الوضوح؛ مرّر بالمرجع باستخدام ref؛ وأعِد قيمًا إضافية باستخدام out؛ ولاحظ أن معاملات in غير متاحة في C# 6. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التواقيع والقيم المُعادة؛ جسم التعبير؛ المعاملات الاختيارية والمسمّاة؛ ref/out؛ التحميل الزائد
  2. المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)
  3. الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد
← العودة إلى C# Academy