هر دو عبارت out و ref برای بازگشت مقادیر استفاده می شن و هر دو متغیرها رو به صورت reffrence ارجاع میدن . پارامترهای out لزوما باید توسط متد مقدار دهی شوند .در حالی که ref اجازه میده تا مقدار اصلی تغییر داده بشه ولی اجبار نمی کنه . در جایی که می خوایم  متغیر رو به صورت reffrence ارجاع بدیم اما نمی خوایم مقدارش در متد تغییر کند ، C# 7.2 یه حالت جدیدی از ارجاع پارامتر به اسم in معرفی کرده است .

پارامترهای in شبیه ref هستند منتها داخل متد read-only هستند . فقط میشه ارجاعشون داد ولی نمیشه تغییرش داد .

در مثال بالا ، متغیر num را به عنوان  in ارجاع دادیم ، مقدار متغیر توسط متد MyMethodIn() استفاده میشه اما هیچ تغییری نمی کنه و به عنوان readonly استفاده میشه .

اگر  بخواید پارامتر in رو تغییر بدید  یه ارور دریافت خواهید کرد : Cannot assign to variable “in int” because it is a read-only variable .

به طور خلاصه ، پارامترهای In وقتی مفید هستند وقتی می خواید متغیرها رو به عنوان reffrence ارجاع بدید اما نمی خواید مقدارش در متد تغییر کنه . پارامترهای ref این تغییر رو اجازه میدن و پارامترهای out اجبار می کنن .