آموزش اعضای استاتیک در سی شارپ

Static در سی شارپ

در مقالات مختلف آموزش سی شارپ در مرکز درس، گفتیم که روش معمول برای ارتباط برقرار کردن با یک کلاس، ایجاد یک نمونه جدید از کلاس در سی شارپ است و سپس کار روی روی شیء حاصل است. در بیشتر موارد؛ این همان چیزی است در کلاس ها وجود دارد؛ توانایی برای نمونه سازی چندین کپی از یک کلاس مشابه و سپس استفاده از آنها به شیوه هایی متفاوت. با این حال، ممکن است بخواهید کلاسی داشته باشید که بدون نمونه سازی آن؛ از آن استفاده کنید. یا حداقل یک کلاس داشته باشید که در آن بتوانید از اعضا بدون ایجاد یک شیء برای آنها استفاده کنید. برای مثال؛ ممکن است یک کلاس با یک متغیر داشته باشید که بدون توجه به این که کجا و چگونه مورد استفاده قرار می گیرد؛ همیشه همان باقی می ماند.

در این مقاله از مرکز درس می خواهیم در مورد این صحبت کنیم که یک کلاس می تواند استاتیک باشد و همچنین اعضا و نیز توابع و فیلدهای ایستا داشته باشد. یک کلاس استاتیک نمی تواند نمونه سازی شود؛ بنابر این؛ به عبارت دیگر؛ این کلاس بیشتر به شکل گروه بندی اعضای مربوط به هم کار می کند؛ تا این که به عنوان یک کلاس واقعی کار بکنند. شما ممکن است انتخاب کنید که در عوض یک کلاس غیر استاتیک ایجاد کنید؛ اما به آن اجازه دهید که برخی اعضای استاتیک داشته باشد. یک کلاس غیر استاتیک را می توان همچنان نمونه سازی کرد و مشابه یک کلاس مرتب به کار گرفت، اما شما نمی توانید از یک عضو استاتیک روی یک شیء کلاس استفاده کنید. یک کلاس استاتیک ممکن است فقط شامل اعضای استاتیک باشد.

بیشتر بخوانید :   مدیریت بحران چیست؟

ابتدا؛ در این قسمت مثالی از یک کلاس استاتیک را مشاهده کنید:

public static class Rectangle

{

public static int CalculateArea(int width, int height)

{

return width * height;

}

}

همان طور که می بینید؛ از کلیدواژه استاتیک برای مشخص کردن کلاس به عنوان استاتیک استفاده می کنیم؛ و سپس از آن دوباره برای مشخص کردن متد و نیز CalculateArea به عنوان استاتیک به کار می رود. اگر ما این کار را انجام ندهیم؛ کامپایلر؛ خطا می دهد؛ زیرا ما نمی توانیم یک عضو غیر استاتیک از یک کلاس استاتیک داشته باشیم.

برای استفاده از این متد؛ آن را مانند زیر؛ به صورت مستقیم در کلاس فراخوانی می کنیم:

Console.WriteLine(“The area is: ” + Rectangle.CalculateArea(5, 4));

ما می توانیم متدهای مفید دیگری به کلاس مستطیل استفاده کنیم؛ اما شاید تعجب کنید که چرا ما طول و عرض مستطیل را به متد حقیقی منتقل می کنیم؛ به جای آنکه آنها را درون کلاس ذخیره کنیم؟ زیرا آن استاتیک است. ما می توانیم آنها را ذخیره کنیم؛ اما فقط یک مجموعه از ابعاد را می توانیم ذخیره کنیم؛ زیرا فقط یک نسخه از کلاس استاتیک وجود دارد. درک این موضوع بسیار مهم است.

در عوض ما می توانیم کلاس غیر استاتیک را ایجاد کنیم و سپس در این کلاس ، CalculateArea را به عنوان یک تابع استفاده کنیم:

public class Rectangle

{

private int width, height;

public Rectangle(int width, int height)

{

this.width = width;

this.height = height;

}

public void OutputArea()

{

Console.WriteLine(“Area output: ” + Rectangle.CalculateArea(this.width, this.height));

}

public static int CalculateArea(int width, int height)

{

return width * height;

}

}

همان طور که مشاهده می کنید؛ ما کلاس غیر استاتیک را ساخته ایم. ما همچنین یک سازنده را نیز اضافه کرده ایم که طول و عرض را اتخاذ می کند و آن را به مثال تخصیص می دهد. سپس ما یک متد OutputArea را اضافه کرده ایم که از روش استاتیک برای محاسبه مساحت استفاده می کند. این یک مثال بسیار خوب از ترکیب اعضای استاتیک با اعضای غیر استاتیک در یک کلاس غیر استاتیک می باشد.

بیشتر بخوانید :   آموزش نصب محیط اندروید

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

ساسان سروشه

نوشته‌های مرتبط

دیدگاه‌ها

*
*