تعداد نمونه هاي ساخته شده از يک شي در سي شارپ

برخي مواقع در حين برنامه نويسي نياز هست تا بخواهيم تعداد نمونه هاي ساخته شده از يک کلاس (تعداد اشياء ساخته شده) را داشته باشيم . مثلا در يک بازي ماشين راني بخواهيم تعداد نمونه هاي ساخته شده از يک نوع خودرو را بدونيم . خوب براي اين کار ميشه از روش هاي مختلفي استفاده کرد مثلا بياييم تک تک خود رو ها رو شمارش کنيم (که البته روش مناسبي نيست) . يا اينکه تعداد ساخته شده از هر کلاس را در يک آرايه يا يک فايل ذخيره کنيم و... روش هاي زيادي براي اين امر وجود داره ولي هرکدام داراي اشکالات و معايبي هست ولي روشي که در ادامه به آن ميپردازيم ضمن اينکه نياز به مديريت کمتري داره . ميشه خيلي راحت به تعداد نمونه ها دسترسي پيدا کرد .

براي اين کار ابتدا کلاس مد نظر را پياده سازي ميکنم :

public class vehicles{

}

سپس يک متغيير شمارنده عددي (int) از نوع ايستا(static) تعريف ميکنيم اين متغيير محلي براي ذخيره سازي تعداد نمونه هاي ايجاد شده است

private static int _counter;

حال يک سازنده ايستا ايجاد ميکنيم اين سازنده فقط يک بار اجرا ميشه و به وسيله اون ما يک مقدار اوليه به متغيير شمارنده انتساب ميدهيم .

static vehicles(){

 _counter = 0;

}

حالا هر زمان که نمونه اوليه از اين کلاس ايجاد بشه بايد يک واحد به شمارنده اضافه بشه و هر وقت يک نمونه از بين بره بايد يک واحد از آن کم بشه . براي اين کار ميشه از سازنده و مخرب مربوط به هر نمونه استفاده کرد

public vehicles(){_counter ++;)

~vehicles(){_counter --;)

البته در اينجا بايد به يک نکته توجه کرد و اون اينه که زمان تخريب کلاس را کامپايلر سي شارپ تعيين ميکند و ما نميتوانيم به زمان دقيق آن را بدست بياوريم پس در اينجا ميتوانيم يک متد ثانويه ايجاد کنيم و در زمان مورد نياز آنرا فرا بخوانيم تا يک واحد از شمارنده کم کند . خوب حالا براي دسترسي به مقدار شمارنده کافي است که يک خصوصيت ايستا به صورت زير ايجاد کنيم .

public  static int Count

{

get{return _counter;}

}

حالا هر زمان که به تعداد نمونه هاي ساخته شده نياز داشته باشيم به صورت زير عمل مي کنيم .

vehicles.Counter;