CodeShot
Midسختی 4 از ۵· در 55٪ مصاحبه‌های این حوزه پرسیده شده

Task و ValueTask چه تفاوتی دارند؟

نشان کردن

پاسخ کوتاه

ValueTask در سناریوهایی که ممکن است به‌صورت همزمان تکمیل شود Allocation را کاهش می‌دهد، اما پیچیده‌تر است.

پاسخ کامل

ValueTask<T> یک Struct است و در مسیرهایی که نتیجه اغلب بلافاصله (Synchronously) آماده است از Allocation اضافه یک Task جلوگیری می‌کند؛ اما محدودیت‌هایی دارد (مثلاً نباید دوبار Await شود) و فقط در مسیرهای پرفورمنس‌محور توصیه می‌شود.