PDA

View Full Version : سوال: مثالی از Refrence Type ها و مفهوم آن



vb8334
پنج شنبه 16 آبان 1392, 16:31 عصر
سلام

دوستان من در مورد Refrence Type ها مطالعه کردم اما در این مثال یه مشکلی دارم

می خوام دقیقآ بهم بگید با رسم شکل که چطوری خروجی میشه "reza" .

class TestClass
{
static void Main(string[] args)
{
Employee e1 = new Employee();
e1.Name = "Ali";

Employee e2;

e2 = e1;

e2.Name = "Reza";

Console.Writeline(e1.Name);
}
}

من این رو متوجه نمیشم که با مساوی گذاشتن e2=e1

e1 داره مقدار e2 رو میخونه دقیقآ برعکس متغیر ها که e1 ریخته میشد توی e2

مرسی

محمد کلهر
پنج شنبه 16 آبان 1392, 17:47 عصر
سلام.
در خط 5 شما یک متغییر ار نوع Employee به اسم e1 تعریف کرد ه اید و دارید آدرس شی ساخته شده از کلاس
Employee در اون ذخیره می کنید (در Refrence Type ها متغییر ها خود شی رو نگهداری نمی کنند بلکه ادرس اون رو ذخیره می کنند.)
با قرار دادن e2 = e1 ادرس شی که متغییر e1 به اون اشاره می کنه درون متغییر e2ریخته می شود.پس دو متغییر e1وe2 به یک شی اشاره می کنند.
Console.Writeline(e1.Name);
طبیعه که باید rezaچاپ بشه .
موفق باشید.

محمد کلهر
پنج شنبه 16 آبان 1392, 18:03 عصر
مطمئنی که کدها رو درست نوشتی ؟ چون با این کد e1 هیچ تغییری نمیکنه و e1 رو هم پرینت میگیری. پس باید Ali نشان داده شود. فکر میکنم یه جایی رو اشتباه نوشتی.
بله.کد ها درستن.دلیلشو توپست بالا گفتم

vb8334
پنج شنبه 16 آبان 1392, 19:36 عصر
شما می گید آدرس e1 توی e2 ریخته میشه و e1 هم به "ali" اشاره می کنه پس در این صورت باید جواب بشه "ali" نه "reza" حالا نمیدونم شاید باز من متوجه نمیشم؟

Mahmoud.Afrad
پنج شنبه 16 آبان 1392, 19:44 عصر
e1 و e2 دو رفرنس برای یک شئ هستند(دو نام برای یک متغیر) پس فرقی نمیکنه از طریق کدوم به متغیر دسترسی پیدا کنید.

محمد کلهر
پنج شنبه 16 آبان 1392, 19:47 عصر
خب شما پسe2=e1 نوشتید:
e2.Name = "Reza";
که این باعث میشه مقدار فیلد name برای هر دو متغییر یکسان بشه.