العمر في Visual Basic

مدة البقاء لعنصر مُعلَن هي الفترة الزمنية عندما تكون متوفرة للاستخدام. المتغيرات هي العناصر الوحيدة التي تملك مدة بقاء. لهذا الغرض, المحول البرمجي يعامل معلمات الإجراء ارجاعات الدالة كحالات خاصة من المتغيرات. مدة بقاء المتغير تمثل الفترة الزمنية التي يمكنه الاحتفاظ بقيمة. يمكن أن تتغير قيمته على مدة بقائه, ولكن دوماً يحمل بعض القيم.

فترات بقاء مختلفة

متغير العضو (تم تعريفه على مستوى الوحدة النمطية خارج أي إجراء) عادةً له نفس مدة البقاء كالعنصر حيث يتم تعريفة. متغير غير مشترك معرف في فئة أو بنية موجود كنسخة منفصلة لكل مثيل الفئة أو البنية حيث يتم تعريفة. كل متغير مثل هذا يملك نفس مدة البقاء كالمثيل الخاص به. ومع ذلك، Shared المتغير يحتوي على فقط مدة بقاء مفردة, التي ستستمر للمدة التي يشتغل فيها التطبيق بأكملها.

المتغير المحلي (تم تعريفه داخل إجراء) موجود فقط أثناء تنفيذ الإجراء يتم التصريح به. هذا ينطبق أيضاً على معلمات ذلك الإجراء و لأية دالة إرجاع. ومع ذلك، إذا كان ذلك الإجراء يقوم باستدعاء الإجراءات الأخرى، تقوم المتغيرات المحلية بحفظ قيمها أثناء تنفيذ الإجراءات المستدعاه.

بداية مدة البقاء

تبدأ مدة بقاء متغير محلي عند دخول عنصر التحكم الإجراء حيث يتم تعريفة. يتم تهيئة كل متغير محلي إلى قيمة الافتراضية لنوع البيانات الخاصة به بمجرد أن يبدأ الاجراء بالتنفيذ. عندما يصادف إجراء Dim الكشف الذي يعين القيم الأولية, يقوم بتعيين هذه المتغيرات إلى تلك القيم, حتى إذا كانت التعليمات البرمجية قامت بالتعيين مسبقاً القيم الأخرى اليها.

تتم تهيئة كل عضو في متغير البنية كما لو كان متغير منفصلة. وبالمثل، يتم تهيئة كل عصر في متغير صفيف بشكل فردي.

الـمتغيرات المعّرفة داخل مقطع داخل إجراء (مثل For التكرار الحلقي) يتم تهيئتها على إدخال إلى الإجراء. عمليات التهيئة هذه تسري سواء أن نفذت التعليمات البرمجية الخاصة بك المقطع أم لا.

نهاية فترة البقاء

عند إنهاء الإجراء, لا يتم الاحتفاظ بقيم المتغيرات المحلية الخاصة به, و Visual Basic يحصل على الذاكرة الخاصة بهم. في المرة التالية التي تقوم بها باستدعاء الإجراء, كل المتغيرات المحلية الخاصة يتم انشاؤها جديدة و معاد تهيئتها.

عند إنهاء مثيل فئة أو بنية, المتغيرات الغير مشتركة تفقد الذاكرة الخاصة بها والقيم الخاصة بها. كل مثيل جديد من الفئة أو البنية ينشئ و يعيد تهيئة المتغيرات الغير مشتركة الخاصة بهم. ومع ذلك، Shared المتغيرات محتفظ بها حتى يتوقف التطبيق عن العمل.

ملحق مدة بقاء

إذا تم تعريف متغير محلي مع Static الكلمة الأساسية, مدة بقاء الخاصة به أطول من وقت تنفيذ الإجراء الخاص به. يعرض الجدول التالي كيف يحدد تعريف الإجراء المدة التي يوجد فيها متغير Static.

موقع و مشاركة الإجراء

مدة الـمتغير الثابت يبدأ

مدة بقاء المتغير الثابت تنتهي

في وحدة نمطية (المشترك بشكل افتراضي)

في المرة الأولى التي يتم استدعاء الإجراء

عند توقف التطبيق عن التنفيذ

في فئة Shared (الإجراء ليس عضو مثيل)

في المرة الأولى التي يتم استدعاء الإجراء إما على مثيل محدد أو على الفئة أو اسم البنية نفسها

عند توقف التطبيق عن التنفيذ

في مثيل فئة, ليس Shared (الإجراء هو عضو مثيل)

في المرة الأولى التي يتم استدعاء إجراء على المثيل محدد

عندما يتم تحرير المثيل لمجموعة البيانات المهملة (GC)

متغيرات ثابته بنفس الاسم

يمكنك تعريف متغيرات ثابته بنفس الاسم في إجراء واحد أو أكثر. إذا قمت بهذا، Visual Basic برنامج التحويل البرمجي يعتبر كل متغير كعنصر منفصل. لا يؤثر تهيئة أحد هذه المتغيرات القيم الأخرى. نفس الشيء يحدث إذا قمت بتعريف إجراء مع مجموعة من التحميلات الزائدة و تعريف متغير ثابت يحمل نفس الاسم في كل تحميل زائد.

الـعناصر الحاوية للمتغيرات الثابتة

يمكنك تعريف متغير محلي ثابت داخل فئة، أي، داخل إجراء في تلك الفئة. ومع ذلك، يتعذر تعريف متغير محلي ثابت داخل بنية, إما عضو بنية أو متغير محلي لإجراء ضمن تلك البنية.

المثال

الوصف

يقوم المثال التالي بتعريف متغير مع ثابت (Visual Basic) الكلمة الأساسية. (لاحظ أنك لا تحتاج Dim الكلمة الأساسية عند عبارة Vsual Basic) Dim) يستخدم معدّل مثل Static.)

الرمز

Function runningTotal(ByVal num As Integer) As Integer
    Static applesSold As Integer
    applesSold = applesSold + num
    Return applesSold
End Function

التعليقات

في المثال السابق، متغير applesSold يستمر بالوجود بعد أن يعود إجراء runningTotal التعليمات البرمجية المستدعية. في المرة التالية runningTotal يتم استدعاؤه applesSold يحتفظ بقيمتها المحسوبة مسبقًا.

اذا applesSold تم التصريح عنها بدون استخدام Static، قد لا يتم الاحتفاظ بالقيم المتراكمة السابقة عبر استدعاءات إلى runningTotal. في المره التالية runningTotal تم استدعاؤها applesSold قد يتم إعادة إنشاؤها و تهيئتها إلى 0، و runningTotal تقوم بإرجاع نفس القيمة التي تم استدعاؤها معه ببساطة.

التحويل البرمجي للتعليمات البرمجية

يمكن تهيّئة القيمة لمتغير محلي ثابت كجزء من التعريف الخاص به. في حالة التصريح بصفيف ليكون Static، يمكنك تهيئة الصنف (عدد الأبعاد) ، طول كل بعد وقيم العناصر الفردية.

الأمان

في المثال السابق، يمكنك إنتاج العمر نفسه بواسطة التصريح عن applesSold في مستوى الوحدة النمطية. إذا قمت بتغيير نطاق المتغير بهذه الطريقة, ومع ذلك، الإجراء لن يمتلك بعد الأن حق وصول الخاص اليه. لأن الإجراءات الأخرى يمكنها الوصول الى applesSold و تغيير قيمته, قد يكون الإجمالي الجاري غير موثوق به وقد تكون التعليمة البرمجية أكثر صعوبة للمحافظة عليها.

راجع أيضًا:

المهام

استكشاف أخطاء أنواع البيانات

المرجع

(Visual Basic) المشترك

لا شيء (Visual Basic)

ثابت (Visual Basic)

المبادئ

أسماء العنصر المعرف

النطاق في Visual Basic

مستويات الوصول في Visual Basic

المتغيرات في Visual Basic

تعريف متغير في Visual Basic

موارد أخرى

مراجع لعناصر معرّفه