• تعریف، بررسی و مقایسه Instance Constructor و Static Constructor در زبان سی شارپ
تعریف، بررسی و مقایسه Instance Constructor و Static Constructor در زبان سی شارپ
1395/09/13 - 10:29:02 // DataBase and Design Pattern // 0 نظر // 8543 بازدید

همه برنامه نویسان سی شارپ با مفهومی به نام متد سازنده آشنایی داشته و از آن به عنوان یک Initializer در سطح کلاس استفاده مینمایند، ولی شاید همه از وجود یک نوع Static از متدهای سازنده در هر کلاس به طور دقیق اطلاع نداشته و کاربرد و تفاوتهای آن با نوع Instant از متدهای سازنده را به درستی ندانند. در این مقاله به صورت کوتاه هر دو نوع را معرفی و به بررسی تفاوتهای آنها خواهیم پرداخت.

بسمه تعالی

تعریف، بررسی و مقایسه Instance Constructor و Static Constructor در زبان سی شارپ

همه برنامه نویسان سی شارپ با مفهومی به نام متد سازنده آشنایی داشته و از آن به عنوان یک Initializer در سطح کلاس استفاده مینمایند، ولی شاید همه از وجود یک نوع Static از متدهای سازنده در هر کلاس به طور دقیق اطلاع نداشته و کاربرد و تفاوتهای آن با نوع Instant از متدهای سازنده را به درستی ندانند. در این مقاله به صورت کوتاه هر دو نوع را معرفی و به بررسی تفاوتهای آنها خواهیم پرداخت.

1- Static Constructor

این نوع از متد سازنده پیش از ایجاد اولین Object سطح کلاس صدا زده خواهد شد و بیشتر برای مقدار دهی مقادیر Static سطح کلاس کاربرد دارد. شایان ذکر است این عملیات فقط و فقط یکبار انجام خواهد شد. زمان اجرای این متد به درستی و روشنی بیان نشده و حدس زده میشود در هنگام ایجاد اسمبلیها این رخ داد به وقوع بپیوندد.

قوانین ایجاد یک Static Constructor

1- هر کلاس فقط یک Static Constructor خواهد داشت.

2- این نوع از متد سازنده، پارامتر ورودی نخواهد داشت.

3- برای این نوع از متد سازنده، نوع نمی توان تعریف نمود.

4- امکان صدا زدن این نوع متد سازنده با کدنویسی به هیچ شکلی امکان پذیر نیست.

2- Instance Constructor

این نوع از متد سازنده در زمان ایجاد یک Object از کلاس درون حافظه ایجاد خواهد گردید.

شباهتها این نوع متد سازنده

1- هر دو باید همنام کلاس باشند

2- هیچ کدام مقداری را Return نخواهند نمود

 

تفاوتهای موجود در این دو نوع متد سازنده

1- نوع Static پارامتر ورودی قبول نمی کند

2- نوع Static حتی Access Modifier هم نمی پذیرد

 

به مثال زیر دقت کنید.

  1. class RandomNumberClass  
  2.     {  
  3.         private static Random RandomKey; // Private static field  
  4.         static RandomNumberClass() // Static constructor  
  5.         {  
  6.             RandomKey = new Random(); // Initialize RandomKey  
  7.         }  
  8.         public int GetRandomNumber()  
  9.         {  
  10.             return RandomKey.Next();  
  11.         }  
  12.     }  
  13.     class Program  
  14.     {  
  15.         static void Main()  
  16.         {  
  17.             RandomNumberClass a = new RandomNumberClass();  
  18.             RandomNumberClass b = new RandomNumberClass();  
  19.             Console.WriteLine("Next Random #: {0}", a.GetRandomNumber());  
  20.             Console.WriteLine("Next Random #: {0}", b.GetRandomNumber());  
  21.         }  
  22.     }  
 

به مقادیر خروجی متدها دقت کنید

Next Random #: 1920476323
Next Random #: 1895533763 

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر