PDA

View Full Version : مبتدی: سوال درباره ی ref



Changer
دوشنبه 17 تیر 1392, 17:08 عصر
به این کد بنگرید
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace House



{


class Type





{


static void Main(string[] args)



{


string string1 = "Sadra";






Console.WriteLine(string1);



fun( string1);


Console.WriteLine(string1);

Console.ReadKey();



}


static void fun( string f)



{


f = f + "x";

Console.WriteLine(f);



}



}

}


حالا به این کد نیز بنگرید
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace House



{


class Type





{


static void Main(string[] args)



{


string string1 = "Sadra";






Console.WriteLine(string1);

fun(ref string1);

Console.WriteLine(string1);

Console.ReadKey();



}


static void fun(ref string f)



{


f = f + "x";

Console.WriteLine(f);



}



}

}

حالا به سوال من بی زحمت پاسخ دهید
سوال : مگر string یک نوع داده ی مرجع نیست پس قاعدتا چه با refوچه بی ref سه خروجی کد اول باید مثل 3خروجی کد دوم باشد

amir200h
دوشنبه 17 تیر 1392, 17:18 عصر
نه دوست من. زمانی حافظه ای از استرینگ تغییر میکند که مقدار اولیه آن تغییر کرده باشد. مثلا اگر یک رشته با مقدار 123 داشته باشیم این مقدار در حافظه ذخیره میشه و تمام استرینگ هایی که دارای این مقدار باشن با نامهای دیگر به این قسمت از حافظه رجوع میکنند. امیدوارم منظورمو تونسته باشم برسونم