عنوان:

‫ref struct در دات‌نت 9


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۱/۲۶ ۰۷:۵۵
آدرس: www.dntips.ir
این مقاله در مورد ref struct در سی شارپ دات‌نت ۹ بحث می‌کند و مزایا و محدودیت‌های آن را برجسته می‌کند.

ref struct چیست؟
  • یک struct خاص که روی پشته (stack) تخصیص داده می‌شود، نه heap.
  • دسترسی کنترل‌شده‌ای را به حافظه را فراهم می‌کند و از برخی خطاهای مرتبط با حافظه جلوگیری می‌کند.

ویژگی‌های کلیدی:
  • تخصیص روی پشته: عملکرد را بهبود می‌بخشد؛ به ویژه برای نمونه‌های کوتاه مدت.
  • بدون تبدیل نوع (Boxing): از تبدیل نوع و ذخیره در مجموعه‌های تخصیص داده شده‌ی در heap جلوگیری می‌کند.
  • طول عمر محدود: حافظه بلافاصله پس از خروج از محدوده، بازیابی می‌شود.

مزایا:
  • عملکرد: برای داده‌های موقت و ساختارهای بزرگ کارآمد است.
  • کنترل حافظه: کنترل مستقیمی را بر نحوه‌ی استفاده از حافظه، فراهم می‌کند.
  • ایمنی: از عملیات ناامن، مانند وظایف ناهمزمان از یک ref struct، جلوگیری می‌کند.

معایب:
  • قابلیت استفاده‌ی محدود: نمی‌تواند به عنوان یک فیلد در کلاس‌ها، انواع تخصیص داده شده‌ی در heap یا مجموعه‌های خاص استفاده شود.
  • خطر سرریز پشته: نمونه‌های بزرگ می‌توانند باعث سرریز پشته شوند.
  • محدودیت‌های استفاده: استفاده‌ی از آن با ویژگی‌هایی مانند async/await محدود است.

مثال کد:
  • struct SensitiveBuffer یک Span of byte را برای مدیریت کارآمد حافظه کپسوله می‌کند.
  • شامل یک متد برای پاک کردن بافر برای امنیت است.



مشاهده مطلب اصلی