PDA

View Full Version : سوال: اعلان یک متغیر توسط برنامه نویس در c#



kamran_14
سه شنبه 26 اردیبهشت 1391, 19:59 عصر
سلام
این 2 تعریف باهم چه فرقی می کنند؟

int a;

int a=new int();
چرا بعضی مواقع از تعریف دوم استفاده می کنند؟
مگه در تعریف اول , حافظه به متغیر a در C#‎ تخصیص داده نمیشه؟

فرید نجفلو
سه شنبه 26 اردیبهشت 1391, 20:17 عصر
سلام
دوست عزیز شما وقتی از

int a;

استفاده می کنید هنوز هیچ مقداری واسه متغیر ندارید (null)
اما وقتی از کد دوم

int a=new int();

استفاده می کنید شما متغیر رو با مقدار پیش فرض (که تو این مورد 0 هست) مقدار دهی می کنید و معدل کد زیر هست:
int a = 0;


یعنی کامپایلر #C برعکس VB.NET به صورت خودکار هنگام تعریف متغیر مقدار پیش فرض رو به اون اختصاص نمیده!

gwbasic
سه شنبه 26 اردیبهشت 1391, 20:22 عصر
خط اول فقط تعریف متغیر هست و مقداردهی صورت نگرفته بنابراین اگر در ادامه بخواهد مقدار a رو get کنید (مثلا مقداری به آن اضافه کنید و یا مقدار آن را بخواهید نمایش دهید) با خطای Use of unassigned local variable 'a' مواجه می شوید یعنی متغیر محلی a مقداردهی نشده است اما در خط دوم هم تعریف انجام شده و هم مقدار دهی شما وقتی متغییری رو new‌ می کنید با مقدار اولیه (برای int یعنی صفر) مقداردهی می شود.
البته معمولا برای Value type‌ها مثل int , double مقدارهی از طریق new کردن صورت نمی گیرید و به صورت ساده تر int a = 0 استفاده می شود.

amirxbest
سه شنبه 26 اردیبهشت 1391, 20:42 عصر
شاید لازم باشه اینو هم بدونی که در اصل وقتی از new استفاده میکنید وقتی مفید هست که شما میخواهید تابع سازنده یا constractor کلاسی که شئ را از آن میسازید فراخانی شود.
اما اگر از new استفاده نکنید شئ از کلاس مورد نظر ایجاد میشه ولی تابع سازنده فراخوانی نمیشه و دلیل اینکه مثغیر ها با new مقدار میگیرند همین هست.
موفق باشید:چشمک:

kamran_14
چهارشنبه 27 اردیبهشت 1391, 08:42 صبح
ممنون از جوابهای مفیدی که برام نوشتید
وقتی مقداری توسط برنامه نویس به متغیری داده نشده آیا این به این معنی است که هنوز تخصیص حافظه برای اون متغیر انجام نشده؟