PDA

View Full Version : سوال: نقش Ref در زمانی که پارامتر ورودی متد یک کلاس است چیست؟



RamezanBeik
چهارشنبه 11 فروردین 1395, 06:06 صبح
با سلام خدمت اساتید محترم
همانطور که همه می دانیم زمانی که پارامتر ورودی یک متد که به صورت Ref مییاشد در واقع آدرس متغییر را برایمتد ارسال میکند نه یک کپی از مقدار
حالا اگر یک object از یک کلاس را به عنوان ورودی متدی که پارامتر ورودی Ref می گیردارسال کنیم چه اتفاقی می افتد؟
مگر جز این نیست که خود Object ایجاد شده از نوع Ref می باشد؟




public class C1
{
public void DoSomthing_A(C2 bar)
{
bar.Value = 1;
}
public void DoSomthing_B(ref C2 bar)
{
bar.Value = 1;
}
}
public class C2
{
private int _value = 0;
public int Value
{
get { return this._value; }
set { _value = value; }
}


}
class Program
{
static void Main(string[] args)
{
C1 m_C1 = new C1();
C2 m_C2 = new C2();
m_C1.DoSomthing_A(m_C2);
m_C1.DoSomthing_B(ref m_C2);
}
}

khokhan
چهارشنبه 11 فروردین 1395, 07:50 صبح
با سلام خدمت اساتید محترم
همانطور که همه می دانیم زمانی که پارامتر ورودی یک متد که به صورت Ref مییاشد در واقع آدرس متغییر را برایمتد ارسال میکند نه یک کپی از مقدار
حالا اگر یک object از یک کلاس را به عنوان ورودی متدی که پارامتر ورودی Ref می گیردارسال کنیم چه اتفاقی می افتد؟
مگر جز این نیست که خود Object ایجاد شده از نوع Ref می باشد؟


مقدار اختصاص یافته در داخل متد رو برمی گردونه و به قولی reference
يعني اينكه درون تابع هر گونه تغييري انجام شود ، خارج از تابع قابل دسترسي است.
البته آرگوماني كه به اين نوع توابع فرستاده مي شود بايد مقدار دهي اوليه شده باشد

RamezanBeik
چهارشنبه 11 فروردین 1395, 09:50 صبح
خیلی ممنون از توجه شما
ولی متاسفانه متوجه منظور شما نمی شم
می شه یه مقدا بیشتر توضیح بفرمایید؟
مرسی