PDA

View Full Version : سوال: تفاوت کلاس static با کلاس معمولی (instance)



FingerPrint
شنبه 29 تیر 1392, 22:54 عصر
ببخشید که هرچی فکر کردم نتونستم سئوالم رو خوب بپرسم
ما همیشه در کلاس Program داخل متد Main یاهرجای دیگه ای میایم و یک نمونه از کلاس مورد نظرمون میسازیم
حال کلاس استاتیک می سازیم :

1) تفاوت ها در چه هستند؟
2) سرعت کدام بالاترند؟
3) چه زمان از آنها استفاده می کنیم؟
4) جایگاه آنها در حافظه کجاست؟

سپاس

erfan_urchin
یک شنبه 30 تیر 1392, 01:49 صبح
اگه منظوتونو درست فهمیده باشم همون کلاس هایی رو میگین که به صورت public static ساخته میشن
اینجور کلاس ها دیگه لازم نیست ازشون شی ساخته بشه مثل کلاس Console ، که شما نمیاین بنویسین Console c = new Console() و یه راست مینیویسی Console.Write()
اگرم منظورتون اینه که چرا بعضی موقع ها برای ساخت کلاس مینویسیم public و بعضی اوقات مینویسیم static ، باید بگم که کلاس های public در همه فرم ها قابل استفاده است اما static فقط در همان فرم قابل استفاده است
امیدوارم که تونسته باشم شما رو به جوابتون رسونده باشم
موفق باشی

hojjatshariffam
یک شنبه 30 تیر 1392, 01:56 صبح
فکر کنم منظورشون تفاوت کاربردی اینها نباشه
بلکه منظورشون تفاوت پیاده سازی ، سرعت اجرا ، حافظه و پس دادن حافظه، مالتی تریدینگ این نوع کلاس ها و ... باشه

یعنی اگه کلاس استاتیک باشه ، متغییر و ساب کلاس های داخل اون حافظشونو پس میدن یا نه؟
این دو کلاس در سرعت متفاوتند یا نه؟
پیاده سازیشون کلا از نظر دات نت چطوریه؟ فقط برای استفاده راحتر ساخته شده اند یا مزایای دیگری هم دارند

danialafshari
یک شنبه 30 تیر 1392, 06:58 صبح
کلاس های Static :
از کلاسی که به صورت static تعریف می شود نمی توان توسط کلمه new یک instance گرفت در نتیجه در کل فقط یک نمونه از کلاس خواهیم داشت.
این نوع کلاس ، فقط می تواند حاوی اعضای static باشد. به عبارت دیگر همه method ها ، field ها و property های تعریف شده باید از نوع static باشند.
یکی از مزایای استفاده از این کلاس ها ، این است که کامپایلر تضمین می کند به هیچ عنوان نمونه ای از این کلاس ساخته نشود.
کلاس های استاتیک sealed هستند در نتیجه نمی توان از آنها ارث برد. این کلاس ها نمی توانند constructor داشته باشند ولی با این حال می توان از static constructor ها برای مقدار دهی به عناصر static کلاس ، استفاده کرد. توجه کنید که static constructor ها پارامتر و modifier ندارند.

باید بگم که کلاس های public در همه فرم ها قابل استفاده است اما static فقط در همان فرم قابل استفاده است
من یک مبتدی هستم و فکر نمی کنم این درست باشه فکر کنم منظور شما public و private هست چون هر دو رو میشه با هم نوشت
قبل از ایجاد تاپیک جستجو کنید
http://barnamenevis.org/showthread.php?391296-%DA%A9%D9%8A-%D8%A7%D8%B2-%DA%A9%D9%84%D8%A7%D8%B3-Static-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%D9%8A%D9%85%D8%9F

a.ameri
یک شنبه 30 تیر 1392, 09:54 صبح
کلاس static نباید زیاد بزگ باشد چون وقتی کلاس static برای اولین بار اجرا میشود تا بسته شدن برنامه منابع سیستم را درگیر میکند

kazem235
یک شنبه 30 تیر 1392, 22:55 عصر
باید public static استفاده کنی public تنها اگر استفاده کنی به متغیر دسترسی داری ولی به مقدار داخلش دسترسی نداری . (static باعث می شه حتی اگر اون کلاس رو صدا نزنی متغیر static داخلش ایجاد بشه و فضا اِشغال کنه)

FingerPrint
دوشنبه 31 تیر 1392, 10:22 صبح
دوستان ازنون ممنونم
توضیحاتی که دادید مفید بودند فقط مطلبی که ذهن منو مشغول کرده راجع به حافظه است!

1) کلاس استاتیک در استک یا هیپ کارشون رو انجام میدن؟
2) تفاوت در سرعت
3) در وب از کلام استفاده می کنیم (دلیل)