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
. - التنفيذ المؤجل: عملية التحويل لا تتم مباشرة، وإنما عند اجتياز العناصر فعليًا.
تعليقات
إرسال تعليق