کلاس استاتیک (static class)

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

کلاس استاتیک (static class)

در C#، استاتیک به معنای چیزی است که نتوان از آن نمونه سازی کرد. کلاس استاتیک کلاسی است که نمی توان یک شیء از آن ساخت و همچنین نمی توان با استفاده از یک شیء به اعضای استاتیک کلاس دسترسی یافت. کلاس های C#، متغیرها، متدها، پراپرتی ها، اپراتورها، events و سازنده ها می توانند با استفاده از کلمه کلیدی static به صورت استاتیک تعریف شوند.

کلاس استاتیک (Static Class)

کلاس Static با قرار دادن کلمه کلیدی static قبل از نام کلاس ایجاد می شود.

تصویر زیر نحوه تعریف یک کلاس استاتیک در سی شارپ را به همراه فیلدها و توابع استاتیک نمایش می دهد.

آموزش کلاس استاتیک

در مثال بالا، کلاس Calculator یک کلاس استاتیک است و همه اعضای آن نیز استاتیک هستند. از آنجا که نمی توان یک شیء از کلاس استاتیک ساخت، اعضای کلاس استاتیک مستقیماً با استفاده از نام کلاس به صورت ClassName.MemberName همانطور که در زیر نشان داده شده است، قابل دسترسی هستند.

کلاس استاتیک

قوانین استفاده از کلاس های استاتیک در سی شارپ

1- کلاس های استاتیک قابلیت نمونه سازی را ندارند.

2- تمامی اعضای یک کلاس استاتیک باید استاتیک باشند، در غیر این صورت با خطای کامپایلر مواجه می شوید.

3- یک کلاس استاتیک می تواند شامل متغیرهای استاتیک، توابع استاتیک، پراپرتی های استاتیک، events استاتیک و سازنده های استاتیک باشد.

4- یک کلاس استاتیک نمی تواند شامل اعضاء و سازنده های نمونه باشد.

5- مخرب ها (Destructors) نمی توانند استاتیک باشند.

6- کلمه کلیدی var نمی تواند جهت تعریف اعضای استاتیک استفاده شود.

7- کلاس های استاتیک کلاس های مهر و موم شده ای (Sealed Class) هستند که قابلیت ارث بری ندارند.

8- یک کلاس استاتیک نمی تواند از کلاس های دیگر ارث بری کند.

9- اعضای کلاس استاتیک با استفاده از ClassName.MemberName قابل دسترسی هستند.

10- طول عمر یک کلاس استاتیک به اندازه طول عمر برنامه است.

اعضای استاتیک در کلاس غیر استاتیک (non-static classes)

یک کلاس معمولی یا غیر استاتیک (non-static classes) می تواند حاوی یک یا تعداد بیشتری متد، فیلدها، پراپرتی ها و events استاتیک یا دیگر اعضای غیر استاتیک باشد. به جای تعریف یک کلاس کاملاً استاتیک، بهتر است که یک کلاس غیر استاتیک با تعدادی اعضای استاتیک تعریف شود.

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

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

فیلدهای استاتیک (static field)

متدهای استاتیک (Static Methods)

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

متدهای استاتیک تنها می توانند متدهای استاتیک دیگر را فراخوانی کنند و به اعضای استاتیک دسترسی داشته باشند. دسترسی به اعضای غیر استاتیک کلاس در متدهای استاتیک غیر ممکن می باشد.

توابع استاتیک

قوانین استفاده از متدهای استاتیک در C#

1- متدهای استاتیک با استفاده از کلمه کلیدی static قبلا از نوع بازگشتی یا بعد از دسترسی دهنده تعریف می شوند.

2- متدهای استاتیک میتوانند حاوی متغیرهای استاتیک محلی باشند.

3- متدهای استاتیک قادر نیستند به متغیرهای غیر استاتیک دسترسی داشته باشند و یا آن ها را فراخوانی کنند مگر اینکه آن ها صراحتاً به عنوان پارامتر در نظر گرفته شوند.

سازنده های استاتیک (Static Constructors) در زبان سی شارپ

یک کلاس غیر استاتیک می تواند حاوی یک سازنده استاتیک بدون پارامتر باشد که به راحتی با استفاده از کلمه کلیدی static تعریف شود، بدون نیاز به کلمات کلیدی تعیین کننده سطح دسترسی مانند public، private و Protected.

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

سازنده های استاتیک

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

مثال زیر نشان می دهد که سازنده استاتیک زمانی فراخوانی می شود که متد استاتیک برای اولین بار فراخوانی شود. فراخوانی متد استاتیک برای بار دوم به بعد، سازنده استاتیک را فراخوانی نخواهد کرد.

static class

قوانین استفاده از سازنده های استاتیک در زبان سی شارپ

1- سازنده استاتیک با استفاده از کلمه کلیدی static و بدون نیاز به کلمات تعیین کننده سطح دسترسی مانند public، private و protected تعریف می شود.

2- یک کلاس غیر استاتیک می تواند حاوی فقط یک سازنده استاتیک بدون پارامتر باشد.

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

4- یک سازنده استاتیک می تواند فقط و فقط به اعضای استاتیک دسترسی داشته باشد، حاوی اعضای نمونه نبوده و نمی تواند به آنها دسترسی داشته باشد.

کلاس استاتیک کلاس static سازنده static اعضای استاتیک

مقالات این دسته بندی