درود بر همهوقتی با ref صدا میزنیم بهمون خروجی 3 3 3 3 میده و اگر ref رو برداریم خروجی 6 5 4 3 میدهکد:
static void A(ref int a,int b)
{
if (a <= b)
return;
a=a-1;
A(ref a,b);
Console.WriteLine(a);
}
static void Main(string[] args)
{
int x = 7;
A(ref x,3);
}
سوال اینجاست که وقتی تابع بازگشتی صدا زده میشهو خطکد:
A(ref a,b);
فرصت چاپ نداشته خوب خط writeline با مقدار فعلی a میره داخل استک.کد:
Console.WriteLine(a);
مثلا 6 میره داخل استک
سری بعدی مقدار a که 5 باشه میره داخل استک.
اما چطور هست که ref همه مقادیر استک رو عوض میکنه؟ آخه عدد رفته داخل استک و تمام!!