کلاس های استاتیک اصولا کلاس های Single Instance هستند یعنی یکبار در حافظه ساخته میشن و تا اخر اجرای برنامه (یا لود بودن AppDomain) در حافظه میمونن،کانستراکتور های Static هم توی سی شارپ کاربرد های جالبی دارن مثلا هر وقت اون کلاس Static قرار بود یکبار توی حافظه ساخته بشه این کانستراکتور فقط یکبار توی کل روند برنامه صدا زده میشه، مثلا شما برای شروع یک Engine و یا Background worker میتونید از این کانستراکتور جالب استفاده کنید و داخلش job رو شروع کنید بدون اینکه نگران باشید که جایی لازم باشه متد Start رو صدا بزنید چون کلاس های استاتیک و کانستراکتور های استاتیک فقط وقتی بارگزاری میشن (یعنی یک Instance از کلاس ساخته میشه) که توی کد ازشون استفاده بشه و در روند اجرا شدن برنامه توی حافظه ساخته نمیشن بلکه فقط وقتی ساخته میشن که توی یک خط کدی ازش استفاده کنید.مثلا اگر کاربر روی یک دکمه کلیک کنه که توی متد اون دکمه از اون کلاس استاتیک استفاده کنید اینجا تازه اون کلاس استاتیک توی حافظه ساخته میشه و کانستراکتور استاکیش صدا زده میشه.
و همچنین اگر یک کلاس جنریک داشته باشید به ازای هر نوع مختلف از T یک Instance جداگونه از اون کلاس استاتیک و کانستراکتورش خواهید داشت، مثلا MyClass<int>.Name با MyClass<string>.Name مقادیرش توی حافظه مختلف خواهند بود ولی هر کدام Static هستند و یکبار در حافظه ساخته شدند و کانستراکتور های خودشون رو هم دارند.
#سی_شارپ
#Static
#CSharp
@CsharpTips
و همچنین اگر یک کلاس جنریک داشته باشید به ازای هر نوع مختلف از T یک Instance جداگونه از اون کلاس استاتیک و کانستراکتورش خواهید داشت، مثلا MyClass<int>.Name با MyClass<string>.Name مقادیرش توی حافظه مختلف خواهند بود ولی هر کدام Static هستند و یکبار در حافظه ساخته شدند و کانستراکتور های خودشون رو هم دارند.
#سی_شارپ
#Static
#CSharp
@CsharpTips