PDA

View Full Version : دلیل مقدار دهی متغیر های نمونه ومقدار دهی نشدن متغیر های محلی



Mohsen_Fotouhi
شنبه 02 آبان 1388, 23:38 عصر
سلام دوستان

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

لطفا یه جواب منطقی بدید

با تشکر

JaguarXF
شنبه 02 آبان 1388, 23:42 عصر
چون کلاسها بطور ذاتی یک متد سازنده دارند که وظیفه اش همین مقدار پیش فرض دادن به متغیرهای عضو آن کلاس است

powerboy2988
شنبه 02 آبان 1388, 23:51 عصر
كلا ما 2تا حافظه داريم. كه شامل Heap و stack هستند ...
و كلا 2 نوع متغير داريم كه reference type و value type هستند...

متغيرهايي از نوع value هميشه از stack فضا ميگيرند و چون حافظه stack معلوم نيست هميشه مقدار هيچي (با null اشتباه نگير) ميگرند...
اما متغيرهايي از نوع reference هميشه از Heap فضا ميگيرند و يك اشاره گر در stack دارند كه آدرس اون متغير در heap در اين اشاره گر موجود ميباشد..

بر اساس اين تعاريف :

متغيرهاي local از نوع value type
و كلاس ها از نوع reference type ها مي باشند..

از اساتيد محترم خواهش مي شود كه اگر حرف هاي بنده مشكلي داشت ... خوشحال ميشم كه درستشو بهمون بگن

ممنون از شما

مهدی کرامتی
دوشنبه 04 آبان 1388, 01:11 صبح
اینجا را ببینید: C#‎: Initialization of instance fields vs. local variables (http://stackoverflow.com/questions/1542824/c-initialization-of-instance-fields-vs-local-variables)