السلام عليكم ..
لربما مضى أكثر من سنه على مشاركتي في قسمي الحبيب الذي نلت شرف الإشراف عليه سابقاً ...
هنا وبسبب الطلب المتزايد على الموضوع وجب عل يأن أقوم بتوضيح هذه القضية .. فهي من أصعب بل من أكثر الأمور سؤالاً من جمهور المبرمجين الجدد ...
ما هو المتغير الإستاتيكي في بيشة الدوت نيت من اللغات المعروفة - السي شارب C#.net والفيجوال بيسك VB.net وغيرها ؟
فكثيراً ما نتعامل معه .. ولكننا نغفل عن التفكير بمعناه أو عن مدى إستخدامه .
الموضوع بسيط وأرجوا أن تخرج عزيزي القارئ بفهم كامل للموضوع بمجرد قراءتك له .
ببساطة يمكن تلخيص وظيفة المتغير الإستاتيكي بأنه مكان يتم تخزين القيم فيه على مستوى ال Class وهو غير قابل للإستنساخ ... مثال :
لاحظ أن هناك متغيرين في هذا الكلاس ... وهما x و y . فالأول من النوع الإستاتيكي ... والثاني من النوع العادي .. وكلاهما عام .. أي أنه يمكننا التعامل معهم من الخارج .كود:class MyClass { public static int x = 1; public int y = 0; public MyClass() { x++; y++; } }
لو قمنا بأخذ Instance من الكلاس MyClass وأسميناه مثلاً .. Ins1 فإننا نستطيع التعامل مع المتغير y ولكننا لا نستطيع ذلك مع x والسبب أن المتغير x هو متغير إستاتيكي وهو حكر على الكلاس فقط ... ونستنتج من ذلك أن الجمل التالية :
- ins1.x = 5 خطأ .
- ins1.y = 5 صحيحة .
- MyClass.x = 5 صحيحة .
- MyClass.y = 5 خطأ .
يعني الستاتيك حكر على الكلاس ... والعادي حكر على ال Instance from class .
نخرج بخلاصة أن المتغير الستاتيكي هو أفضل مكان لخزن قيمة تحتاجها كل الإنستنس .. بحيث حتى ولو تم إنهاء ال Instance من الذاكرة .. فإن القيمة المشتركة لن تتغير أبداً .. بينما جميع المتغيرات العاية ستنتهي بإنتهاء حياه ال Instance . والمتغير الإستاتيكي سيعيش طول فترة البرنامج .. وما إن ننتهي منه سينتهي ..
مع ملاحظة أنه لا يمكنك إستخدام كلمة Static في ال Function التي تنشأها .