تغییر متغیرها از راه دور با ref
تا حالا شده بخوای یه متغیر رو به یه متد پاس بدی و خودِ متد بتونه مقدار اصلی اون متغیر رو تغییر بده؟ به صورت پیشفرض این کار ممکن نیست (چون در حالت عادی، فقط یک کپی از مقدار پاس داده میشه).
اما #C یه ابزار قدرتمند برای این کار داره:
کلمه کلیدی ref.
وقتی از ref استفاده میکنی، دیگه کپی مقدار رو به متد نمیدی، بلکه خودِ آدرس حافظه متغیر رو بهش میدی. حالا متد و کد اصلی، هر دو به یک خانه از حافظه نگاه میکنن و هر تغییری، همه جا اعمال میشه.
قانون مهم: باید از کلمه کلیدی ref هم در تعریف متد و هم موقع صدا زدنش استفاده کنی. این کار باعث میشه کد کاملاً خوانا باشه و همه بفهمن که اینجا قراره متغیر اصلی تغییر کنه.
مثال کلاسیک و بهترین کاربرد ref (متد Swap):
static void Swap(ref string a, ref string b)
{
// چون a و b به متغیرهای اصلی اشاره دارن،
// هر تغییری اینجا، مستقیماً روی x و y تأثیر میذاره.
string temp = a;
a = b;
b = temp;
}
// --- نحوه استفاده ---
string x = "Penn";
string y = "Teller";
// با ref متغیرهای اصلی رو به متد میفرستیم
Swap(ref x, ref y);
Console.WriteLine(x); // خروجی: Teller
Console.WriteLine(y); // خروجی: Penn
🤔 حرف حساب و تجربه شما
استفاده از ref برای مواقع خاص و قدرتمندیه و به شما کنترل بیشتری روی حافظه میده.
شما تا حالا کجا از ref استفاده کردید که واقعاً به دردتون خورده باشه؟
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[پاتوق گیک های #C]
🔖 هشتگها:
#CSharp
#DotNet
#RefKeyword