المعاملات الاختيارية والمسمّاة؛ 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 معاملات 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التواقيع والقيم المُعادة؛ جسم التعبير؛ المعاملات الاختيارية والمسمّاة؛ ref/out؛ التحميل الزائد
- المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)
- الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد