TGViewer
کدهالیک | codehalic کدهالیک | codehalic @codehalics · 4.15K subscribers
Post #676 597
کدهالیک | codehalic مایکروسافت در مقاله‌ی جدید .NET توضیح داده که C# قرار است مدل دقیق‌تری برای Memory Safety داشته باشد. در نسخه‌های فعلی، کلمه‌ی unsafe بیشتر یک هشدار کلی است؛ یعنی می‌گوید بخشی از کد ممکن است با حافظه به‌صورت مستقیم یا کم‌سطح کار کند، اما همیشه مشخص نمی‌کند…
نگاه فنی‌تر به Memory Safety جدید در C#


تغییر اصلی اینه که در C# 16، مفهوم unsafe دقیق‌تر می‌شه. قبلاً وقتی روی یک متد unsafe می‌ذاشتیم، یعنی داخلش اجازه داریم با pointer و عملیات سطح پایین کار کنیم. اما مدل جدید بین دو چیز فرق می‌ذاره: APIای که از caller انتظار رعایت شرط ایمنی دارد و بخشی از کد که واقعاً عملیات خطرناک انجام می‌دهد.
مثلاً اگر متدی از caller می‌خواهد pointer معتبر بدهد، خود signature می‌تواند unsafe باشد. اما داخل بدنه، جایی که pointer واقعاً dereference می‌شود، باید با unsafe { } مشخص شود:
public static unsafe byte Read(byte* ptr)
{
unsafe
{
return *ptr;
}
}

اینجا unsafe بیرونی یعنی caller مسئول است pointer معتبر بدهد؛ ولی unsafe داخلی دقیقاً محل دسترسی خطرناک به حافظه را نشان می‌دهد.
چرا این مهم است؟
چون خطر اصلی صرفاً وجود pointer نیست؛ خطر اصلی جایی است که از آن pointer برای خواندن یا نوشتن حافظه استفاده می‌کنیم. مدل جدید کمک می‌کند این نقاط پنهان نمانند، مخصوصاً وقتی با IntPtr، Marshal، NativeMemory یا interop کار می‌کنیم.
همچنین unsafe APIها باید بهتر مستند شوند؛ مثلاً با بخش‌هایی مثل:
/// <safety>
/// Caller must ensure ptr points to valid readable memory.
/// </safety>

این باعث می‌شود در code review دقیق‌تر بفهمیم چه چیزی بر عهده‌ی caller است و چه چیزی داخل متد تضمین شده.

@codehalics | کدهالیک
  • 👍 2
More from @codehalics
  1. Oct 7, 2026این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه ! اول DIP (مع…
  2. Oct 7, 2026توی NestJS اینکه چند تا پوشه مثل Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چ…
  3. Oct 7, 2026توی نسخه جدید 16.4 نکس‌جی‌اس، مهم‌ترین خبر اینه که مدل جدید Cache Components بالاخره کامل…
  4. Oct 5, 2026یه اتفاق جالب افتاده: یه برنامه‌‌نویس موقع ساخت پروژه دات‌نت با Claude متوجه شده هوش مصنوع…
  5. Oct 5, 2026دوره جامع معماری نرم‌افزار منتشر شد. در این آموزش ۴ ساعته و فشرده، مباحث Clean Architectur…
  6. Oct 4, 2026این پروژه خیلی جالب بود یه نفر نرم افزار مدیریت انبار رو از یه کار خشک و تکراری به یه بازی…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →