وظیفه
روشی بنویسید که مقادیر دو متغیر را تعویض کند.
ویژگی این کار این است که ما به تغییرات ایجاد شده در رویه نیاز داریم تا برای برنامه فراخوانی شناخته شود.
بیایید سعی کنیم روال را به این صورت بنویسیم:
جابجایی خالی استاتیک (int a، int b) // با چنین توصیفی از پارامترهای رویه،
{ // مقادیر آرگومان ها را کپی می کند (x و y)
int c; // متغیرهای a و b متغیرهای مستقلی هستند که به x و y مرتبط نیستند
c = a; a = b; b=c;
}
استاتیک void Main()
{
int x=1, y=2;
مبادله (x, y); //مقادیر متغیرهای x و y (آگومان ها) در پارامترهای a و b، x = 1، y = 2 کپی می شوند.
}
اگر این برنامه را اجرا کنید، می بینید که مقادیر متغیرهای x و y تغییر نکرده اند. برای اینکه پارامترها مقادیر آرگومان ها را تغییر دهند، باید از انتقال داده با مرجع استفاده کنید. .
void Swap ( ref int a, ref int b ) // اکنون متغیرهای a و b آدرس متغیرهای x و y را در حافظه دریافت می کنند
{
int c;
c = a; a = b; b=c;
}
استاتیک void Main()
{
int x=1, y=2;
مبادله (ref x، ref y);
کاربرد: اگر یک آرگومان را با مرجع ارسال کنید، آنگاه فقط نام متغیر (نه یک عدد و نه یک عبارت حسابی) می تواند در این مکان هنگام فراخوانی رویه قرار گیرد.
شما نمی توانید رویه ای مانند این را فراخوانی کنید:
<پیش>
مبادله (x, 4);
مبادله (5+x، y)؛