نسخه آزمایشی

آموزش سی شارپ – استاتیک(Static ها)
آموزش سی شارپ – استاتیک(Static ها)

آموزش برنامه نویسی سی شارپ- Static ها  با سلام

در این پست و این ویدئو با مبحث Static در سی شارپ آشنا می شوید و با موارد زیر آشنا خواهیم شد.

– مفهوم استاتیک ها

– فیلد های استاتیک

– متد های استاتیک و دسترسی به آنها

– Property های استاتیک

– کلمه کلیدی Const و محدودیت های آن

– آشنایی با فیلد های  Readonly و محدودیت ها و نکات آنها و نحوه مقداردهی اولیه به فیلد های فقط خواندنی

– مقایسه Readonly با Const

– تلفیق مفهوم Readonly با static ها

– کاربرد متد های Static در فراخوانی سازنده های خصوصی

هنگامی که متدی یا فیلدی به صورت static تعریف می شود دیگر برای استفاده و دسترسی به آن نیازی به ساخت شی نیست.و با دستگیره کلاس می توانیم به آن فیلد یا متد استاتیک دسترسی داشته باشیم.همانطور که در تکه کد بالا مشاهده می کنید با استفاده از کلاس Human به فیلد NumofHands که به صورت استاتیک هست دسترسی داریم بدون ساخت شی ء.

* نکته ای دیگری که لازم به ذکر هست  این است که اعضای استاتیک یک کلاس در بین همه ی اشیاء ساخته شده از آن کلاس مشترک هست.

Const:

گاهی در برنامه تان در مثلا صد جای برنامه از یک مقدار ثابت a(مثلا ۳۰) استفاده می کنیم.فرض کنید که نظرتان به هر دلیل عوض شود و بخواهید این مقدار ۳۰ را به مقدار دیگری تغییر دهید.مجبورید که هر صد جا را ویرایش کنید.

راه کار بهتری هست و آن استفاده از کلمه کلیدی Const هست.هنگامی که یک فیلد به صورت Const تعریف می شود حتما باید با یک مقدار ثابت مقدار دهی اولیه شود.حال اگر بخواهیم مقدار را عوض کنیم دیگر لازم نیست صد جای برنامه دست به تغییر بزنیم کافیست مقدار همین فیلد const را تغییر دهیم و پروژه را دوباره کامپایل کنیم.

نحوه تعریف یک فیلد ثابت در C#:

* نکته :اگر فیلدی که به صورت const تعریف شود و هنگام اعلان با یک مقدار ثابت مقدار دهی اولیه شود دیگر مجاز نیستیم که در جاهای مختلف این مقدار را عوض کنیم.

* نکته : هر فیلدی که به صورت Const تعریف شود به طور پیشفرض در دل خود به صورت استاتیک خواهد بود و لازم نیست که از کلمه static استفاده کنیم.اگر از این کلمه استفاده کنیم دچار یک خطای کامپایلری می شویم.

* نکته:همانطور که ذکر شد که فیلد های const به طور پیشفرض استاتیک هستند پس با استفاده از نام کلاس می توانیم به آنها دسترسی داشته باشیم و آنها را فقط بخوانیم و همچنین به خاطر استاتیک بودن بین همه ی اشیاء ساخته شده از آن کلاس مشترک خواهند بود.

…..

فیلد های ReadOnly:

فیلدهای فقط خواندنی (ReadOnly) شبیه به فیلد های Const هستند با اندکی تفاوت.

* نکته: این فیلد ها بین همه ی اشیاء ساخته شده از یک کلاس مشترک نیستند مگر آنکه آنها را به صورت static هم تعریف کنیم.اگر فیلدی در کلاسی به صورت ReadOnly باشد همه ی اشیایی که از این کلاس ساخته می شوند یک فیلد فقط خواندنی مختص به خود خواهند داشت.

* نکته: پس طبق نکته گفته شده قبلی ، می توان یک فیلد ReadOnly را با همراه با کلمه static ترکیب کرد.

*نکته : این فیلد های فقط خواندنی ، فقط باید در داخل سازنده مقدار دهی اولیه شوند.

* نکته:در صورتی که فیلد های فقط خواندنی در خارج از سازنده مقدار دهی اولیه شوند دچار یک خطا خواهیم شد.

* نکته: برخلاف const که با نام کلاس به آن دسترسی داشتیم ، برای دسترسی به فیلد فقط خواندنی (ReadOnly) با استفاده از دستگیره نام شی و همچنین اشاره گر this می توانیم دسترسی داشته باشیم.اما چنانچه اگر این فیلد فقط خواندنی با استاتیک ترکیب شده باشد آنگاه مانند const با استفاده از نام کلاس به آن دسترسی خواهیم داشت.

کلاس های استاتیک

اگر کلاسی به صورت استاتیک باشد مجاز به ساختن شی از آن (یعنی استفاده از کلمه کلیدی new ) نیستیم.

سازنده ی Static

سازنده ی Static سازنده ای است همنام با کلاس که وظیفه مقدار دهی اولیه به اعضای استاتیک برای یکبار قبل از اولین اجرا را خواهد داشت.

* نکته : سازنده static سازنده ای بدون پارامتر هست.درصورتی که پارامتر تعریف کنید با خطا برخورد خواهید کرد.

* نکته این سازنده هیچگونه access Modifier نمی تواند داشته باشد حتی public.

* نکته :هر سازنده ی استاتیک تنها می تواند اعضای استاتیک را مقدار دهی کند و نه سایر اعضا را.

* نکته: در یک کلاس می توانیم دو نوع سازنده استاتیک و معمولی که هم نام کلاس هستند و بدون پارامتر داشته باشیم و هیچگونه خطایی رخ نخواهد داد.

سازنده خصوصی (Private Constructor )

تا حالا با سازنده ی معمولی و استاتیک آشنا شده اید.سربارگذاری سازنده ها رو هم که در آموزش های قبلی آموخته اید اما در این آموزش با سازنده خصوصی آشنا می شویم.

سازنده ای که سطح دسترسی آن به جای public بودن به صورت private هست.بنابراین چیزی که واضح است بیرون از کلاس به آن نمی توانیم دسترسی داشته باشیم.پس از بیرون کلاس نمی توانیم از آن شی ای بسازیم.

راه حل به نظر شما چیست؟؟؟؟ سعی کنید از چیزهایی که تا حالا آموخته اید استفاده کنید.

بله درست حدس زدید! استفاده از یک متد static در داخل خود کلاس که این متد به صورت Public هست.اینطوری می تونید از بیرون کلاس و با استفاده از نام کلاس به این متد استاتیک دسترسی داشته باشید و سازنده خصوصی را که در داخل خود کلاس هصت و صد البته این متد به آن دسترسی دارد فراخوانی کنید و شی ایجاد کنید.

حالا متدی که گفتیم استاتیک هست می تواند به طور مثال به صورت زیر و عضو کلاس Human باشد.

حالا حتما سوال براتون پیش آمده که  خب چرا لقمه را پیچوندیم و یا گره ای که بادست باز میشه را که کور گره نمیزنن ! عجب ضرب المثلی شد 😆

به نظرتون میشد یک سازنده معمولی تعریف کنیم و اینهمه دنگ وفنگ نداشته باشیم.خب یه خرده از جواب رومن میدم ولی کاملش رو حتما جستجو کنید تا لقمه آماده نباشه که هلو برو تو گلو!!!!!!

– گاهی نیاز هست که درست قبل از ساخت یک شی یک متد اجرا شود و یک سری کارها را برای ما انجام دهد.

– گاهی نیاز هست که در ساخت شی محدودیت هایی بزاریم.( مثلا حداکثر قرار دادن در ایجاد شی و …. )

شما حتما بیشتر جستجو کنید…

توصیه می کنم که خود ویدئو را دانلود و تماشا کنید که کاملتر و با مثال های بهتری هست.

یک نظر برای "آموزش سی شارپ – استاتیک(Static ها)"


  1. Jaylynn گفت:

    That’s a smart answer to a tricky quisteon

ارسال دیدگاه

نام (*)
پست الکترونیکی (*)
وبسایت

There are no products