در تماس باشید
پست الکترونیک وارد شوید


توضیح و کاربرد Ref در سی شارپ

توضیح و کاربرد Ref در سی شارپ
1403/03/03 امین باقری نژاد
توضیح و کاربرد Ref در سی شارپ

static void Main(string[] args)
{
    Console.WriteLine("Hello, World!");
    int a = 20;
    int b = 30;

    var result = sum(a, b);
}

public static int sum(int a, int b)
{
    a = 25;
    b = 23;
    return a + b;
}

قطعه کد بالا را با هم بررسی کنیم:
دو متغیر a و b تعریف و مقداردهی شده‌ اند. ما متدی به نام sum ساخته‌ ایم که دو ورودی دارد. این ورودی‌ ها را می‌ گیرد، آنها را به اعداد 25 و 23 تغییر می‌ دهد و جمع آنها را بر می‌ گرداند. وقتی BreakPoint روی result قرار دهیم، می‌ بینیم که مقدار بازگشتی 48 است.

اما اگر مقدار a و b را چک کنیم، همچنان 20 و 30 باقی مانده‌ اند. دلیل این است که زمانی که a و b به ورودی متد sum داده می‌ شوند، یک کپی از این متغیرها ساخته می‌ شود و تغییرات روی این کپی‌ ها اعمال می‌ شود. به همین دلیل است که وقتی در کلاس Main breakpoint فعال می‌ شود، می‌بینیم که متغیرهای a = 20 و b = 30 هستند.

برای اینکه نمونه‌ ای از روی a و b ساخته نشود و تغییرات مستقیماً روی متغیرهای اصلی اعمال شود، از ref استفاده می‌ کنیم:

 


static void Main(string[] args)
{
    Console.WriteLine("Hello, World!");
    int a = 20;
    int b = 30;

    var result = sum(ref a, ref b);
}

public static int sum(ref int a, ref int b)
{
    a = 25;
    b = 23;
    return a + b;
}

 

حالا دوباره breakpoint بگذاریم. نتیجه تغییر نکرده است، اما این بار اگر به a و b که در کلاس Main هستند دقت کنیم، می‌ بینیم که مقادیر آنها به 25 و 23 تغییر کرده‌ اند و دیگر از a و b نمونه‌ ای ساخته نشده است.

دوره ی مقدماتی سی شارپ

کلمات کلیدی
out ref در سی شارپ
ref در سی شارپ