تخطَّ إلى المحتوى

params (مجموعات)

params مع أنواع المجموعات params (مجموعات)

منذ C# 13، لم يعد params مقتصرًا على المصفوفات؛ يمكن استخدامه مع Span وReadOnlySpan وأي نوع مجموعة يدعم IEnumerable مع دالة Add.

قبل C# 13، معامل params كان يجب أن يكون مصفوفة فقط (params int[] values). الآن يمكن استخدامه مع Span<T> وReadOnlySpan<T>، وكذلك أي نوع مجموعة يطبّق IEnumerable<T> ويملك دالة Add (مثل List<T>)، وحتى واجهات مثل IEnumerable<T> وIReadOnlyList<T> — يولّد المترجم التخزين اللازم تلقائيًا عند استخدام واجهة.

هذا يفتح الباب لاستدعاء دوال params بأداء أفضل عبر Span بلا تخصيص مصفوفة على الكومة (heap) في كل استدعاء.

الصياغة

void MethodName(params ReadOnlySpan<Type> items) { ... }

📄 مثال

void PrintAll(params ReadOnlySpan<string> items)
{
    foreach (var item in items)
        Console.WriteLine(item);
}

PrintAll("سارة", "براء", "ليلى");

أهم النقاط

العنصرالوظيفة
params Span<T>بلا تخصيص مصفوفة على الكومة لكل استدعاء
params IEnumerable<T>المترجم يولّد التخزين تلقائيًا عند استخدام واجهة
متوفّرة منذC# 13

💡 نصائح عملية

  • استخدم params ReadOnlySpan<T> بدل params T[] في دوال حسّاسة للأداء تُستدعى كثيرًا

⚠️ أخطاء شائعة

  • الظن أن params لا يزال مقتصرًا على المصفوفات فقط بعد C# 13 — القيد ذاك رُفع

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSHARP الكامل بالعربي.