در برنامهنویسی شیءگرا و به خصوص زبان سیشارپ، سازندهها نقش مهمی در مقداردهی اولیهٔ اشیاء و متغیرهای یک کلاس ایفا میکنند. یکی از انواع سازندهها، سازنده استاتیک یا Static Constructor است که بهطور خاص برای مقداردهی متغیرهای استاتیک و انجام عملیات اولیه در سطح کلاس طراحی شده است. در این مقاله، بهطور جامع به بررسی مفهوم سازنده استاتیک، ویژگیهای آن و کاربردهای عملی آن در سیشارپ میپردازیم.
سازنده استاتیک چیست؟
سازنده استاتیک یک نوع ویژه از سازندهها است که هنگام بارگذاری یک کلاس توسط CLR (Common Language Runtime)، یعنی محیط اجرای برنامههای NET.، بهطور خودکار فراخوانی میشود. هدف اصلی سازنده استاتیک، مقداردهی متغیرهای استاتیک و آمادهسازی کلاس برای استفاده است. سازنده استاتیک برخلاف سازندههای معمولی، تنها یکبار و قبل از دسترسی به هر متد یا ایجاد هر شیء از کلاس اجرا میشود.
به مثال زیر توجه کنید:
public class SampleClass
{
static int myStaticVariable;
static SampleClass()
{
myStaticVariable = 10;
Console.WriteLine("Static constructor called");
}
}
در این مثال، سازنده استاتیک SampleClass مقداردهی اولیه متغیر myStaticVariable را انجام میدهد. این سازنده فقط یک بار و قبل از دسترسی به کلاس یا ایجاد هر شیء فراخوانی میشود.
ویژگیهای سازنده استاتیک در سیشارپ
سازنده استاتیک ویژگیهای خاصی دارد که آن را از دیگر سازندهها متمایز میکند. این ویژگیها عبارتند از:
- بدون پارامتر بودن: سازندههای استاتیک نمیتوانند پارامتر دریافت کنند. به عبارت دیگر، شما نمیتوانید اطلاعاتی را به سازنده استاتیک پاس دهید؛ زیرا وظیفه آن تنها مقداردهی اولیهٔ متغیرهای استاتیک است و نیازی به ورودی ندارد.
- فراخوانی خودکار: برخلاف سازندههای معمولی که هنگام ایجاد یک شیء جدید از کلاس فراخوانی میشوند، سازنده استاتیک بهصورت خودکار و یکبار توسط CLR در زمان بارگذاری کلاس فراخوانی میشود.
- اجرای یکباره: سازنده استاتیک تنها یکبار اجرا میشود، آن هم زمانی که کلاس برای اولین بار به آن دسترسی پیدا میکند. این بدان معناست که پس از اولین بارگذاری کلاس، دیگر این سازنده اجرا نخواهد شد.
- عدم دسترسی مستقیم به سازنده استاتیک: شما نمیتوانید بهطور مستقیم سازنده استاتیک را فراخوانی کنید؛ بلکه این CLR است که بهطور خودکار این کار را انجام میدهد.
- ایجاد خودکار توسط CLR: اگر در کلاس شما سازنده استاتیک تعریف نشده باشد، CLR بهصورت خودکار یک سازنده پیشفرض ایجاد میکند تا مطمئن شود که کلاس بهدرستی مقداردهی اولیه شده است.
کاربردهای سازنده استاتیک
سازندههای استاتیک در مواقعی مفید هستند که نیاز به مقداردهی متغیرهای استاتیک یا انجام تنظیمات اولیه برای کلاسها دارید. برخی از موارد استفادهٔ متداول عبارتند از:
- مقداردهی اولیهٔ متغیرهای استاتیک: اگر کلاس شما شامل متغیرهای استاتیک است، میتوانید از سازنده استاتیک برای مقداردهی اولیهٔ آنها استفاده کنید.
- اجرای عملیاتهای اولیه برای کلاس: سازنده استاتیک میتواند برای اجرای عملیاتهایی مانند تنظیمات پیکربندی اولیه کلاس یا مقداردهی وابستگیها استفاده شود.
تفاوت سازنده استاتیک و سازنده معمولی
برای درک بهتر مفهوم سازنده استاتیک، بهتر است تفاوتهای کلیدی آن با سازنده معمولی را بشناسید:
- تعداد دفعات اجرا: سازنده معمولی هنگام ایجاد هر شیء از کلاس فراخوانی میشود، اما سازنده استاتیک تنها یکبار و آن هم در زمان بارگذاری کلاس اجرا میشود.
- پارامترها: سازندههای معمولی میتوانند پارامتر بپذیرند و بر اساس آنها عمل کنند، اما سازنده استاتیک هیچ پارامتری نمیپذیرد.
- فراخوانی دستی: سازنده معمولی را میتوانید با ایجاد یک شیء فراخوانی کنید، اما سازنده استاتیک بهطور خودکار توسط CLR فراخوانی میشود.
مثال کاربردی
فرض کنید شما در حال توسعه یک سیستم حسابداری هستید و نیاز دارید که یک متغیر استاتیک که تعداد کل تراکنشها را ذخیره میکند، بهصورت خودکار و تنها یکبار مقداردهی اولیه شود. برای این کار میتوانید از سازنده استاتیک استفاده کنید:
public class AccountingSystem
{
static int totalTransactions;
static AccountingSystem()
{
totalTransactions = 0;
Console.WriteLine("Accounting system initialized");
}
public static void AddTransaction()
{
totalTransactions++;
}
public static void DisplayTransactions()
{
Console.WriteLine($"Total transactions: {totalTransactions}");
}
}
در این مثال، سازنده استاتیک هنگام بارگذاری کلاس AccountingSystem اجرا میشود و متغیر totalTransactions را مقداردهی اولیه میکند.
جمعبندی
سازندههای استاتیک در سیشارپ نقش کلیدی در مقداردهی متغیرهای استاتیک و آمادهسازی کلاسها برای استفاده دارند. آنها به شما این امکان را میدهند که بدون نیاز به ایجاد شیء از کلاس، عملیات اولیهای را انجام دهید و اطمینان حاصل کنید که کلاس بهدرستی مقداردهی اولیه شده است. درک و استفاده صحیح از سازندههای استاتیک میتواند به بهبود عملکرد و کارایی برنامههای شما کمک کند.
اکنون که با سازنده استاتیک آشنا شدید، میتوانید از این مفهوم برای بهینهسازی کدهای خود استفاده کنید و برنامههای کارآمدتری بسازید
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید