PDA

View Full Version : سوال: كاربرد متغير نوع Ref در تابع؟



nima-28
چهارشنبه 21 مرداد 1388, 09:32 صبح
سلام. مي خواستم در مورد استفاده و كاربرد متغير نوع Ref در تابع بپرسم ؟ آيا قضه با ارسال آرايه به تابع قابل حل نيست ؟؟؟

Evil 69
چهارشنبه 21 مرداد 1388, 10:55 صبح
شما وقتی یک ارایه یا ایندکسی از اون رو برای تابع می فرستین به دلیل این که C# از اشاره گر ها پشتیبانی می کنه به صورت Ref شناخته می شن اما گاهی وقت ها ما نمی خوایم که ارایه تعریف کنیم خوب حالا اون رو با کلمه ref به تابع می دیم تا تغییراتی که تابع به اون میده برای ما نگه داشته بشه در ضمن شما با استفاده از Ref و out می تونین بیشتر از یک خروجی از تابعتون بگیرین

hozouri
چهارشنبه 21 مرداد 1388, 10:56 صبح
دوست عزیز
فرض کنید شما یک تابع دارید که یک عملیات ریاضی رو انجام میده


private void a(int i)
{
i=2+2;
}


پس از اتمام تابع مقدار i به حالت اول یعنی 2 باز می گردد ...
ولی اگر از ref استفاده نماییم ...


private void b(ref int i)
{
i=2+2;
}


پس از اتمام تابع متغیر i مقدار 4 را در خود نگهداری می نماید.

حالا حساب کنید درون کد ها بخوهیم از این توابع استفاده نماییم ...


int x=2,y=2;

a(x);

b(ref y);

//x is 2
//y is 4

nima-28
چهارشنبه 21 مرداد 1388, 11:43 صبح
اينارو بلدم.
ميخوام يك نمونه كاربرد مهمشو ببينم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/

hozouri
چهارشنبه 21 مرداد 1388, 13:30 عصر
اینم یه نمونه دیگه :
من 2 تا فیلد دارم که روی جفتش می خوام عملیاتی انجام بشه و بعد از مقدار آن ها آگاهی پیدا کنم :



public void a(ref string s,int i)
{
s = s+" ref ";
i = i +2;
}

Evil 69
چهارشنبه 21 مرداد 1388, 13:33 عصر
مثلا اگر بخوای یک ساختار درختی با سطح نا محدود شما نیاز دارین که Node ها رو جدا کنین داده ها رو بهشون اضافه کنین و بعد دوباره اضافه کنینشون به Parent خوب برای این کار شما از تابع باید استفاده کنین خوب حالا باید Node رو به صورت ref ارسال کنین .

البته کاربرد های زیادی داره که وقت کار بهشون بر خورد می کنین

nima-28
یک شنبه 25 مرداد 1388, 07:46 صبح
سلام . ممنون ولي من هنوز يك كاربرد مهم رو نديدم اينها رو كه تو هر كتابي ميشه ديد ...