سلام دوستان
می دونم این سوال خیلی مبتدیانه است ولی من هنوز دلیل این که چرا متغیر های نمونه کلاس مقدار دهی اولیه می شوند ولی متغیر های محلی مقدار دهی اولیه نمی شوند رو نمی دونم
لطفا یه جواب منطقی بدید
با تشکر
سلام دوستان
می دونم این سوال خیلی مبتدیانه است ولی من هنوز دلیل این که چرا متغیر های نمونه کلاس مقدار دهی اولیه می شوند ولی متغیر های محلی مقدار دهی اولیه نمی شوند رو نمی دونم
لطفا یه جواب منطقی بدید
با تشکر
چون کلاسها بطور ذاتی یک متد سازنده دارند که وظیفه اش همین مقدار پیش فرض دادن به متغیرهای عضو آن کلاس است
كلا ما 2تا حافظه داريم. كه شامل Heap و stack هستند ...
و كلا 2 نوع متغير داريم كه reference type و value type هستند...
متغيرهايي از نوع value هميشه از stack فضا ميگيرند و چون حافظه stack معلوم نيست هميشه مقدار هيچي (با null اشتباه نگير) ميگرند...
اما متغيرهايي از نوع reference هميشه از Heap فضا ميگيرند و يك اشاره گر در stack دارند كه آدرس اون متغير در heap در اين اشاره گر موجود ميباشد..
بر اساس اين تعاريف :
متغيرهاي local از نوع value type
و كلاس ها از نوع reference type ها مي باشند..
از اساتيد محترم خواهش مي شود كه اگر حرف هاي بنده مشكلي داشت ... خوشحال ميشم كه درستشو بهمون بگن
ممنون از شما
آخرین ویرایش به وسیله powerboy2988 : یک شنبه 03 آبان 1388 در 08:54 صبح
اینجا را ببینید: C#: Initialization of instance fields vs. local variables