unsafe بیشتر یک هشدار کلی است؛ یعنی میگوید بخشی از کد ممکن است با حافظه بهصورت مستقیم یا کمسطح کار کند، اما همیشه مشخص نمیکند دقیقاً کدام عملیات خطرناک است و چه قراردادی باید بین نویسندهی API و استفادهکننده رعایت شود. مدل جدید تلاش میکند این مرز را شفافتر کند: کدهایی که با pointer، حافظهی unmanaged، Marshal یا APIهای حساس سروکار دارند باید صریحتر مشخص کنند چه پیشفرضهایی برای امن بودن لازم است.اهمیت این تغییر در این است که C# نمیخواهد قابلیتهای low-level خودش را حذف کند؛ بلکه میخواهد استفاده از آنها قابلتحلیلتر، قابلبررسیتر و کمریسکتر شود. وقتی کامپایلر بتواند بخشهای حساس به حافظه را دقیقتر تشخیص دهد، code review بهتر انجام میشود، مسئولیت APIها واضحتر میشود و احتمال مخفی ماندن خطاهایی مثل دسترسی نامعتبر به حافظه، use-after-free یا buffer overrun کاهش پیدا میکند. به زبان سادهتر، هدف این نیست که C# را محدودتر کنند؛ هدف این است که هرجا برنامهنویس به حافظه نزدیکتر میشود، قواعد ایمنی هم شفافتر و قابل اعتمادتر باشند.
https://devblogs.microsoft.com/dotnet/improving-csharp-memory-safety/
@codehalics | کدهالیک