📔 قابلیت Extension members در سیشارپ ۱۴
📔 قابلیت Extension members در سیشارپ ۱۴
بالاخره بعد از کشوقوسهای فراوون (شروع جدیاش از سال ۲۰۲۱ بود) بالاخره امکان Extension members به سیشارپ ۱۴ (نسخه پیشنمایش ۳) اومد.
از سیشارپ ۳ میتونیم اکستنشنمتد برای تایپها بنویسیم. ولی حالا دیگه محدود به متد نیستیم و property و static method هم پشتیبانی میشه.
توی سیشارپ ۱۴ یه بلاک جدید به نام extension داریم:
public static class Extensions
{
extension(IEnumerable
{
public IEnumerable
=> source.Where(x => x > threshold);
public bool IsEmpty
=> !source.Any();
}
}
توی مثال بالا، عملا دیگه از this استفاده نشده، قبلا همین رو باید اینجوری مینوشتیم:
WhereGreaterThan(this IEnumerable
در حالیکه:
*️⃣بخش extension(IEnumerable
*️⃣متد WhereGreaterThan: بدون نیاز به استفاده از this، چون receiver به صورت ضمنی تو بلاک extenstion در دسترسه.
*️⃣پراپرتی IsEmpty: هم به راحتی بر اساس receiver تعریف شده که چک میکنه آیا لیست خالی هست یا نه.
حتی اینو میتونید به صورت جنریک هم بنویسید:
extension
where T : INumber
{
public IEnumerable
=> source.Where(x => x > threshold);
public bool IsEmpty
=> !source.Any();
}
🔗 رفرنس
🔗 مباحثات اولیه
💬 به نظرتون چقدر کاربردیه؟