دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • مرداد

جلسه ۲۳ : کلمه کلیدی Static در #C

  • دسته‌بندی‌ها :
جلسه ۲۳ : کلمه کلیدی Static در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در قسمت قبل در رابطه با Partial ها و کاربرد آنها توضیح دادیم. در این قسمت قصد داریم شما را کلمه کلیدی Static در #C و سازنده Static در #C آشنا کنیم.

      #C مثل سایر زبان های برنامه نویسی مانند C ++، جاوا و … شامل کلمه کلید Static می باشد که می توان در کلاس ها، متغیرها، متد ها، خواص، عملگرها، رویدادها و سازندگان استفاده کرد، ولی ، نمی توان آن را با indexers، destructors یا انواع غیر از کلاس ها استفاده کرد.

      کلمه کلیدی static یک مورد را غیر قابل اثبات می سازد، به این معنی است که نمی توان اشیاء static را نمونه سازی کرد. اگر کلمه کلیدی static به یک کلاس اعمال شود، این کلاس نمیتواند با استفاده از کلمه کلیدی new اثبات شود.

      اگر کلمه کلیدی static به یک متغیر، متد یا پراپرتی یک کلاس اعمال شود، می توان به آنها بدون ایجاد یک شیء از کلاس دسترسی پیدا کرد، فقط از className.propertyName، className.methodName استفاده می کنیم.

      مثال : 

      خروجی :

      مثال : 

      در مثال بالا، MyStaticClass یک کلاس استاتیک با متغیر، متد و پراپرتی استاتیک است. میتوان به تمام موارد ایستا با استفاده از className بدون ایجاد یک شی از آن، دسترسی پیدا کرد ، به عنوان مثال MyStaticClass.MyStaticMethod .

      همچنین ممکن است یک کلاس دارای متدها ، پراپرتی ها و … غیر استاتیک باشد. شما می توانید کلاس موارد غیر استاتیک را با استفاده از کلمه کلیدی new استفاده کنید، ولی، متغیر نمونه فقط می تواند به متدها و متغیرهای غیر استاتیک دسترسی پیدا کند و نمی تواند به متدها و متغیرهای ایستا دسترسی پیدا کرد.

      مثال : 

      در مثال فوق، با نمونه گیری از کلاس میتوان به متد MyNonStaticClass دسترسی پیدا کرد. اما، شما نمیتوانید به موارد استاتیک دسترسی پیدا کنید. به شکل زیر دقت کنید :

      متد غیر استاتیک

      متد غیر استاتیک

       

       

      سازنده Static در #C :

      یک کلاس استاتیک یا غیر استاتیک می تواند سازنده ایستا داشته باشد بدون هیچ گونه تعیین نوع دسترسی مانند public, private protected و … .

      یک سازنده استاتیک در کلاس غیر استاتیک تنها یک بار زمانی اجرا می شود که کلاس برای اولین بار نمونه سازی شده باشد.

      یک سازنده استاتیک در یک کلاس استاتیک تنها یک بار زمانی اجرا می شود که هر یک از اعضای استاتیک آن برای اولین بار اجراء شوند.

      مثال : 

      خروجی :

      مثال : 

      در مثال فوق، ما چندین بار به متغیر و پراپرتی داخل کلاس دسترسی پیدا کردیم، اما سازنده استاتیک با اولین مقدارهی متغیر ، تنها یک بار اجراء شد.

      مثال : 

      خروجی :

      مثال : 

      در مثال فوق، ما MyNonStaticClass را سه بار تکرار میکنیم، اما سازنده استاتیک با اولین نمونه سازی، تنها یک بار اجراء شد.

      همانطور که می دانید، قسمت های اصلی حافظه نرم افزار را stack و heap تشکیل داده اند. اعضای استاتیک در یک ناحیه ویژه درون پشته ای با نام High Frequency Heap ذخیره می شوند. اعضای استاتیک کلاسهای غیر استاتیک نیز در پشته ذخیره می شوند و در همه نمونه های کلاس به اشتراک گذاشته می شوند.

      بنابراین تغییرات انجام شده توسط یک نمونه در تمام موارد دیگر منعکس خواهد شد.

      همانطور که قبلا ذکر شد، یک زیرمجموعه ثابت فقط  میتواند به سایر زیرمجموعه های استاتیک دسترسی پیدا کند ، زیرا اعضای استاتیک بدون ایجاد یک نمونه استفاده می شوند و بنابراین نمیتوانند به اعضای غیر استاتیک دسترسی پیدا کنند.

      تصویر زیر نشان می دهد که چگونه موارد ایستا در حافظه ذخیره می شوند:

      اشغال حافظه در متدهای استاتیک

      اشغال حافظه در متدهای استاتیک

       

      چند نکته مهم جهت بخاطر سپردن :

      1. کلاس های استاتیک با استفاده از کلمه کلیدی new نمیتوانند استفاده شوند.
      2. آیتم های استاتیک فقط می توانند به سایر آیتم های ایستا دسترسی پیدا کنند. به عنوان مثال، یک کلاس استاتیک فقط می تواند شامل اعضای ایستا، مانند متغیرها، روش ها و غیره باشد. یک متد استاتیک فقط می تواند شامل متغیرهای استاتیک باشد و می تواند تنها به سایر موارد استاتیک دسترسی داشته باشد.
      3. اقلام استاتیک منابع را بین چندین کاربر به اشتراک می گذارند.
      4. کلمه کلیدی static را نمی توان با indexers، destructors یا انواع غیر از کلاس ها استفاده کرد.
      5. یک سازنده استاتیک در کلاس غیر استاتیک تنها یک بار زمانی اجرا می شود که کلاس برای اولین بار نمونه سازی شده باشد.
      6. یک سازنده استاتیک در یک کلاس استاتیک تنها یک بار زمانی اجرا می شود که هر یک از اعضای استاتیک آن برای اولین بار دسترسی پیدا کنیم.
      7. اعضای استاتیک به ناحیه high frequency heap حافظه اختصاص داده می شوند.

       

      در این بخش با کلمه کلیدی static و کاربرد آن در زبان #C آشنا شدید ، در بخش بعدی در مورد متدهای Anonymous توضیح خواهیم داد.

      QR:  جلسه ۲۳ : کلمه کلیدی Static در #C
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر