مقالهای در Reddit به بررسی دقیق پارامترهای "in" در C# میپردازد و هشداری در مورد تصورات نادرست در مورد بهینهسازی عملکرد با استفاده از آنها ارائه میدهد. نویسنده توضیح میدهد که استفاده از "in" برای اجتناب از کپیبرداری از ساختارها (structs) تنها در موارد خاصی (مانند ساختارهای بزرگ و readonly) کارآمد است. پارامتر "in" یک تضمین معنایی مبنی بر عدم تغییر وضعیت فیلدهای ساختار ارائه میدهد و کامپایلر (JIT) باید این موضوع را رعایت کند. با این حال، اگر کامپایلر نتواند به راحتی اثبات کند که دسترسی به ویژگیها یا متدهای نمونه، ساختار را تغییر نمیدهد، ممکن است یک کپی دفاعی ایجاد کند که در این صورت، استفاده از "in" هیچ مزیت عملکردی ندارد. در مقابل، پارامتر `ref readonly` به توسعهدهندگان اجازه میدهد تا به وضعیت پشت یک ارجاع دسترسی داشته باشند و آن را تغییر دهند، بدون اینکه الزاماً بهینهسازی عملکردی را به همراه داشته باشد. مقاله همچنین منابع مختلفی برای یادگیری C# از جمله مستندات رسمی مایکروسافت، کتابها و دورههای آنلاین را معرفی میکند.
مشاهده مطلب اصلی