Cast() في LINQ

شرح دالة Cast<T>() في LINQ

دالة Cast<T>() في LINQ تُستخدم لتحويل عناصر مجموعة غير عامة (non-generic collection) إلى نوع محدد (T)، مما يتيح لك استخدام عمليات LINQ القياسية على هذه المجموعة.

تُنفذ هذه الدالة باستخدام التنفيذ المؤجل (deferred execution)، أي أن عملية التحويل لا تتم إلا عند اجتياز العناصر فعليًا (مثلًا باستخدام foreach).


مثال على استخدام Cast<T>():


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // إنشاء ArrayList تحتوي على عناصر من أنواع مختلفة
        ArrayList list = new ArrayList { 1, 2, "three", 4 };

        try
        {
            // محاولة تحويل جميع العناصر إلى نوع int باستخدام Cast<int>()
            IEnumerable<int> result = list.Cast<int>();

            foreach (int number in result)
            {
                Console.WriteLine(number);
            }
        }
        catch (InvalidCastException ex)
        {
            Console.WriteLine($"خطأ: {ex.Message}");
        }
    }
}

الناتج:


1
2
خطأ: Unable to cast object of type 'System.String' to type 'System.Int32'.

في هذا المثال، عند محاولة تحويل العناصر باستخدام Cast<int>()، يحدث استثناء من نوع InvalidCastException عند الوصول إلى العنصر "three" لأنه سلسلة نصية ولا يمكن تحويلها إلى عدد صحيح (int).


ملاحظات مهمة:

  • استثناءات محتملة: سيتم رمي InvalidCastException إذا احتوت المجموعة على عناصر لا يمكن تحويلها إلى النوع T.
  • التنفيذ المؤجل: عملية التحويل لا تتم مباشرة، وإنما عند اجتياز العناصر فعليًا.


تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework