LINQ Empty Method في C#
شرح دالة Empty() في LINQ
في هذا الدرس، سنتعرّف على دالة Empty() في LINQ، وهي دالة تُستخدم لإنشاء تسلسل فارغ من نوع محدد، بدون الحاجة لاستخدام null
أو إنشاء قائمة جديدة.
ما هي دالة Empty()؟
دالة Empty()
هي دالة ثابتة (static) ضمن الكلاس Enumerable
، وتُستخدم لإرجاع تسلسل فارغ من نوع IEnumerable<T>
، دون إنشاء كائن جديد في كل مرة.
الصيغة العامة:
IEnumerable<T> emptySequence = Enumerable.Empty<T>();
T
: هو نوع البيانات داخل التسلسل.- النتيجة: تسلسل فارغ من النوع
IEnumerable<T>
.
متى نستخدم Empty()؟
- عندما تريد إرجاع تسلسل فارغ بدلًا من
null
. - لتفادي الاستثناءات عند التكرار باستخدام
foreach
. - لتهيئة قائمة بطريقة آمنة (Safe Initialization).
مثال 1: قائمة فارغة من أعداد صحيحة
var emptyInts = Enumerable.Empty<int>();
foreach (var item in emptyInts)
{
Console.WriteLine(item); // لا شيء سيتم طباعته
}
مثال 2: قائمة فارغة من كائنات
public class Product
{
public string Name { get; set; }
}
var emptyProducts = Enumerable.Empty<Product>();
foreach (var p in emptyProducts)
{
Console.WriteLine(p.Name); // لا شيء سيتم طباعته
}
الفرق بين null و Empty():
الحالة | هل يمكن التكرار عليها؟ | آمنة مع LINQ؟ | تُطلق استثناء؟ |
---|---|---|---|
null |
❌ لا | ❌ لا | ✅ نعم |
Enumerable.Empty<T>() |
✅ نعم | ✅ نعم | ❌ لا |
استخدام عملي داخل دالة:
public IEnumerable<Product> GetProducts(bool hasData)
{
if (hasData)
return new List<Product> { new Product { Name = "Mouse" } };
else
return Enumerable.Empty<Product>(); // بدلاً من null
}
ملاحظات هامة:
Enumerable.Empty<T>()
لا يُنشئ نسخة جديدة في كل مرة، بل يُرجع نسخة ثابتة (static instance).- أكثر أمانًا وأفضل من استخدام
null
أوnew List<T>()
في حالات التهيئة الافتراضية.
تعليقات
إرسال تعليق