الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد
حمّل الأساليب زائدًا بأمان (الاسم نفسه ومعاملات مختلفة)، وبما أن C# 6 لا تتضمن دوال محلية، فحاكها باستخدام مساعدات خاصة صغيرة.
الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
نظرة عامة
الهدف: أعد استخدام اسم أسلوب واحد لأعمال مترابطة (التحميل الزائد). لا توجد دوال محلية في C# 6؛ لذا استخدم أساليب مساعدة خاصة وصغيرة بدلًا منها.
أساسيات التحميل الزائد
تشترك التحميلات الزائدة في الاسم، لكنها تختلف في أنواع المعاملات أو عددها. يختار المصرّف أفضل تطابق.
using System;
public static class MathX
{
public static int Sum(int a, int b) { return a + b; }
public static double Sum(double a, double b) { return a + b; }
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Sum ints = " + MathX.Sum(2, 3));
Console.WriteLine("Sum doubles = " + MathX.Sum(2.5, 3.1));
}
}
التحميل الزائد حسب عدد المعاملات
يؤدي تغيير عدد المعاملات إلى إنشاء مجموعة واضحة من التحميلات الزائدة.
using System;
public static class Printer
{
public static void Print(string text)
{
Console.WriteLine(text);
}
public static void Print(string text, int times)
{
for (int i = 0; i < times; i = i + 1)
{
Console.WriteLine(text);
}
}
}
public class Program
{
public static void Main(string[] args)
{
Printer.Print("Hello");
Printer.Print("Hi", 2);
}
}
قاعدة نوع القيمة المُعادة
القاعدة: لا يمكن لنوع القيمة المُعادة وحده تمييز التحميلات الزائدة. غيّر أنواع المعاملات أو عددها أو معدّلاتها (مثل ref/out) لإنشاء تحميل زائد صالح.
بديل الدوال المحلية
لا توجد دوال محلية في C# 6: استخرج أسلوبًا خاصًا وصغيرًا للحفاظ على ترتيب الأسلوب الرئيسي.
using System;
// No local functions in C# 6: use a tiny private helper inside the class.
public class Report
{
private static string Header(string title)
{
return "-- " + title + " --";
}
public static void Print(string title, string body)
{
Console.WriteLine(Header(title));
Console.WriteLine(body);
}
}
public class Program
{
public static void Main(string[] args)
{
Report.Print("Status", "All green");
}
}
حل التحميل الزائد
يختار المصرّف أفضل تطابق من مجموعة التحميلات الزائدة. إذا كانت الاستدعاءات غامضة، فأضف تحويلًا صريحًا أو عدّل التواقيع.
using System;
public static class Formatter
{
public static string Format(int n) { return "N=" + n; }
public static string Format(string s) { return "S=" + s; }
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Formatter.Format(5)); // picks int overload
Console.WriteLine(Formatter.Format("hello")); // picks string overload
// Avoid ambiguity: cast when needed
Console.WriteLine(Formatter.Format((int)3));
}
}
قاعدة التحميل الزائد
خلاصة
الخلاصة: أنشئ مجموعات التحميلات الزائدة بتغيير أنواع المعاملات أو عددها، وليس نوع القيمة المُعادة. في C# 6، استبدل الدوال المحلية بـأساليب مساعدة خاصة وصغيرة للحفاظ على نظافة الأساليب.
الأسئلة الشائعة
هل درس «الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد» مجاني؟
نعم — نص درس «الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد»؟
حمّل الأساليب زائدًا بأمان (الاسم نفسه ومعاملات مختلفة)، وبما أن C# 6 لا تتضمن دوال محلية، فحاكها باستخدام مساعدات خاصة صغيرة. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التواقيع والقيم المُعادة؛ جسم التعبير؛ المعاملات الاختيارية والمسمّاة؛ ref/out؛ التحميل الزائد
- المعاملات الاختيارية والمسمّاة؛ ref/out/in (الأساسيات)
- الدوال المحلية (ملاحظة حول C# 6) والتحميل الزائد