عبارة Vsual Basic) Dim)

تقوم بتعريف و تخصيص مساحة تخزين لمتغير واحد أو أكثر.

[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ] 
Dim [ WithEvents ] variablelist

الأجزاء

  • attributelist
    اختياري. راجع قائمة سمة.

  • accessmodifier
    اختياري. يمكن أن يكون أحد الخيارات التالية:

    انظر مستويات الوصول في Visual Basic

  • Shared
    اختياري. راجع ‏مشترك‬.

  • Shadows
    اختياري. راجع الظلال.

  • Static
    اختياري. راجع ثابت.

  • ReadOnly
    اختياري. راجع للقراءة فقط.

  • WithEvents
    اختياري. تحدد أن هذه متغيرات كائن تُشير إلى مثيلات من فئة يمكنها رفع أحداث. راجع WithEvents.

  • variablelist
    مطلوبة. قائمة متغيرات يتم تعريفها في هذه العبارة.

    variable [ , variable ... ]

    كل variable يحتوي على بناء الجملة والأجزاء التالية:

    variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With { [ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]

    جزء

    الوصف

    variablename

    مطلوبة. إسم المتغير. انظر أسماء العنصر المعرف

    boundslist

    اختياري. قائمة حدود لكل بُعد لمتغير الصفيف.

    New

    اختياري. ينشئ مثيل جديد للفئة عند تشغيل العبارة Dim .

    datatype

    مطلوب إذا كان Option Strict هو On. نوع بيانات المتغير.

    With

    اختياري. يقدم قائمة مُهيئ الكائن.

    propertyname

    اختياري. اسم الخاصية في الفئة التي يتم إجراء مثيل لها.

    propinitializer

    مطلوب بعد propertyname =. التعبير الذي يتم تقييمه و تعيينه إلى اسم الخاصية.

    initializer

    اختياري إذا كان New لم يتم تحديده. التعبير الذي يتم تقييمه و تعيينه لمتغير عند إنشائه.

ملاحظات

يجب تعريف كل متغير تستخدمه في البرنامج الخاص بك، ليعرف برنامج التحويل البرمجي Visual Basic نوع بيانات المتغير ومعلومات أخرى مثل أي التعليمات البرمجية يمكنها الوصول إليه. المثال التالي يعرّف متغيّر ليقيّد قيمة Integer .

Dim numberOfStudents As Integer

يمكنك استخدام Dim في مستوى وحدة نمطية أو إجراء فقط. وهذا يعني تعريف السياق لمتغير يجب أن يكون فئة، بنية، وحدة نمطية، إجراء أو مقطع و لا يمكن أن يكون ملف المصدر، مساحة الاسم، أو واجهة. لمزيد من المعلومات، راجع سياقات الـتعريف و مستويات الوصول الافتراضية.

إذا كان Option Explicit هو On (الافتراضي) ، يتطلب المحول البرمجي تعريف لكل متغير تستخدمة. إذا قمت بتشغيل Option Explicit Off،كل متغير غير معروف بشكل افتراضي يكون نوع البيانات كائن، والذي قد لا يكون ما ترغب به.

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

Dim summary As String = "Summary of results" 

يمكنك تحديد أي التعليمات البرمجية يمكنها الوصول إلى المتغير بواسطة توفير accessmodifier في العبارة Dim . للحصول على مزيد من المعلومات، راجع "المعدلات" و "مستوى الوصول" تحت "معلومات تفصيلية" في صفحة التعليمات هذه.

يمكنك تعريف متغير يقيّد صفيف ، الذي يمكنه تقييد قيم متعددة. للحصول على معلومات أكثر، راجع "قواعد الصفيف" تحت "المعلومات المفصّلة" في صفحة التعليمات هذه. لمزيد من المعلومات حول الصفائف، انظر الصفائف في Visual Basic. يقوم المثال التالي بتعريف متغير الصفيف Integer .

Dim days() As Integer 

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

يقدم Visual Basic 2008 مُهيآت كائن، المستخدمة لتعريف مثيلات من أنواع مسماه و مجهولة، و نوع الاستدلال المحلي. لمزيد من المعلومات، راجع أنواع مجهولة ، مهيئات الكائن أنواع مسماة و مجهولة ، و استدلال الـنوع المحلي.

معلومات مفصّلة

يغطي هذا مقطع النواحي التالية بالتفصيل:

  • التعريف

  • أنواع البيانات

  • الصفائف

  • السلوك

  • استكشاف الأخطاء وإصلاحها

قواعد التعريف

  • تعريف السياق. المتغير الذي يتم تعريفه في مستوى الوحدة النمطية ، خارج أي إجراء هو متغير عضو أو حقل; هو عضو الفئة أو البنية أو الوحدة النمطية التي تقوم بتعريفه .

    المتغير الذي يتم تعريفه في مستوى إجراء هو متغير محلي; هو محلي للإجراء أو المقطع الذي يقوم بتعريفه .

  • السمات يمكنك تطبيق سمات لمتغيرات عضو فقط، وليس للمتغيرات المحلية. السمة تساهم بالمعلومات لبيانات تعريف التجميع، التي هي غير ذات معنى بالنسبة للمخزن المؤقت مثل المتغيرات المحلية.

  • استخدام ضمني لـ Dim. إذا قمت بتحديد أحد معدّلات Public، Protected، Friend، Protected Friend، Private، Shared، Shadows، Static، ReadOnly، أو WithEvents، يمكنك بشكل اختياري حذف الكلمة الأساسية لـ Dim .

    Public maximumAllowed As Double
    Protected Friend currentUserName As String
    Private salary As Decimal
    Static runningTotal As Integer
    

    في مستوى الوحدة النمطية لا يمكنك استخدام المعدّل Static لتعريف متغيرات عضو. في مستوى الإجراء لا يمكنك استخدام Shared، Shadows، ReadOnly، WithEvents، أو أي معدّلات وصول لتعريف متغيرات محلية.

  • متغيرات WithEvents. يمكنك تحديد WithEvents فقط على متغيرات عضو، وليس على متغيرات محلية داخل إجراء.

    إذا حددت WithEvents، نوع بيانات المتغيرات يجب أن يكون من نوع فئة معينة و ليس Object. يتعذر تعريف أي صفيف مع WithEvents.

    لمزيد من المعلومات حول هذه الأحداث، انظر الـأحداث (Visual Basic).

  • متغيرات متعددة. يمكنك تعريف متغيرات متعددة في نفس عبارة التعريف، تحديد الجزء variablename لكل متغير و اتباع اسم الصفيف بأقواس. يتم فصل المتغيرات المتعددة بفواصل.

    Dim lastTime, nextTime, allTimes() As Date
    

قواعد نوع البيانات

  • أنواع البيانات. العبارة Dim يمكنها تعريف نوع البيانات لمتغير. يمكنك تحديد أي نوع بيانات أو اسم لقائمة تعداد ، فئة، بنية أو واجهة.

    Dim finished As Boolean
    Dim monitorBox As System.Windows.Forms.Form
    
  • النوع الافتراضي. إذا لم تقم بتعيين datatype، يأخذ المتغير نوع البيانات من initializer. إذا كانت datatype و initializer غير موجودة‬، بشكل افتراضي يصبح نوع البيانات نوع البيانات كائن. إذا حددت كلا من datatype و initializer، نوع البيانات من initializer يجب أن يكون قابل للتحويل إلى datatype.

  • أنواع مختلفة. يمكنك تعيين أنواع بيانات مختلفة لمتغيرات مختلفة باستخدام بند As منفصل لكل متغير تقوم بتعريفه. بدلاً من ذلك، بإمكانك تعريف متغيرات متعددة لتكون من نفس النوع باستخدام بند As شائع. كل متغير يأخذ نوع البيانات المحدد في أول بند As يواجهه بعد جزء variablename الخاص به.

    Dim a, b, c As Single, x, y As Double, i As Integer
    ' a, b, and c are all Single; x and y are both Double
    
  • التهيئة. العبارة Dim يمكنها تهيئة محتويات المتغيرات المحددة في variablelist. لنوع القيمة، يمكنك استخدام initializer لتوفير تعبير ليتم تعيينه للمتغير. يجب أن يتم تقييم التعبير إلى ثابت يمكن حسابه في وقت التحويل البرمجي.

    Dim quantity As Integer = 10
    Dim message As String = "Just started"
    

    لنوع مرجع، استخدم الكلمة الأساسية New لإنشاء مثيل جديد من الفئة أو البنية المحددة بواسطة datatype. إذا كنت تستخدم New، لا تستخدم تعبير initializer . بدلاً من ذلك، قم أنت بتوفير الوسائط، إذا كانت مطلوبة، للدالة الإنشائية من الفئة التي تقوم بإنشاء المتغير منها.

    Dim bottomLabel As New System.Windows.Forms.Label
    

    إذا تم تعريف أكثر من متغير بنفس البند As لا يمكنك توفير initializer لهذه المجموعة من المتغيرات.

قواعد الصفيف

  • متغيرات الصفيف. لتحديد أن متغير في variablelist عبارة عن صفيف، قم باتباع variablename الخاصة به مباشرة بأقواس. إذا كان للصفيف أكثر من بعد، يجب تضمين فواصل بين الأقواس للإشارة إلى عدد الأبعاد.

    Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte
    

    يمكن أن يكون للصفيف من 1 إلى 32 بعد.

    لمزيد من المعلومات، راجع الصفائف في Visual Basic.

  • حدود الصفيف. يمكنك تحديد الحد الأدنى والأعلى لكل بعد. لتقوم بذلك، قم بتضمين boundslist داخل الأقواس. لكل بُعد، boundslist تعيّن الحد الأعلى و بشكل اختياري الحد الأدنى. الحد الأدنى هو دوماً الصفر، سواء قمت بتحديده أم لا. كل فهرس يتراوح من صفر إلى حده الأعلى.‬

    العبارتين التاليتين متكافئتين. كل عبارة تقوم بتعريف صفيف من 21 عنصر من نوع Integer . عند الوصول إلى الصفيف، يمكن أن يتراوح الفهرس من 0 إلى 20.

    Dim totals(20) As Integer
    Dim totals(0 To 20) As Integer
    

    العبارة التالية تقوم بتعريف صفيف ثنائي الأبعاد من نوع Double. يحتوي الصفيف على 4 صفوف (3 + 1) لكل منها ستة أعمدة (5 + 1) .

    Dim matrix2(3, 5) As Double
    

    لاحظ أن الحد الأعلى يمثل أعلى قيمة ممكنة لذلك الفهرس، وليس طول هذا البعد، وهو الحد الأعلى زائد واحد.

  • حدود صفيف فارغ. يمكنك ترك كل الحدود فارغة في تعريف الصفيف. في حالة القيام بذلك، يحتوي الصفيف على عدد الأبعاد التي تحددها، ولكن لم يتم تهيئته. لذلك، فإنه يحتوي على القيمة Nothing حتى تقوم على الأقل بتهيئة بعض من عناصره. العبارة Dim يجب أن تعين حدود لكل الأبعاد أو لا تعيّن حدوداً لأي منها .

    Dim messages() As String
    
  • الصفائف الفارغة. من الممكن استخدام -1 لتعريف الحد الأعلى لبُعد الصفيف. هذا يدل على أن الصفيف فارغ ولكنه ليس Nothing، التمييز مطلوب من قبل بعض وظائف وقت تشغيل اللغة العامة. ومع ذلك، فإن التعليمات البرمجية لـ Visual Basic ليس بإمكانها الوصول لمثل هذا الصفيف. إذا حاولت القيام بذلك، الخطأ IndexOutOfRangeException يحدث أثناء التنفيذ. لمزيد من المعلومات، راجع الصفائف في Visual Basic.

  • تهيئة الصفيف. يمكنك تهيئة قيم الصفيف بإحاطة هذه القيم بأقواس متعرجة ({}).

    Dim longArray() As Long = {0, 1, 2, 3}
    

    بالنسبة للصفائف متعددة الأبعاد، تهيئة كل بُعد منفصل تكون محاطة بأقواس في البعد الخارجي. العناصر محددة في ترتيب رئيسي الصف.

    Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}
    

السلوك

  • **القيم الافتراضية.**إذا لم تقم بتعيين initializer لمتغير ما، يقوم Visual Basic بتهيئته إلى القيمة الافتراضية لنوع البيانات الخاص به. يعرض الجدول التالي قيم التهيئة الافتراضية.

    نوع البيانات

    القيمة الافتراضية

    كل الأنواع الرقمية (بما في ذلك Byte و SByte)

    0

    Char

    ثنائي 0

    كل أنواع المرجع (بما في ذلك Object، String، و كافة الصفائف)

    Nothing

    Boolean

    False

    Date

    12: 00 ص من 1 يناير من السنة 1 (01/01/0001 12: 00: 00 ص)

    تتم تهيئة كل عنصر في البنية كما لو كان متغير منفصلة. إذا قمت بتعريف طول الصفيف ولكنك لم تقم بتهيئة عناصره، تتم تهيئة كل عنصر كما لو كان متغير منفصلة.

  • مستوى الوصول. متغيرات الفئة و عضو الوحدة النمطية (خارج أي إجراء) افتراضية للوصول الخاص، و متغيرات أعضاء البنية افتراضية للوصول العام. يمكنك ضبط مستويات الوصول الخاصة بهم بمعدلات الوصول. لا يمكنك استخدام معدّلات الوصول على المتغيرات المحلية (داخل إجراء).

  • النطاق. تكون المتغيرات المحلية في نطاق فقط ضمن الإجراء أو المقطع الخاصة بها. تكون متغيرات الأعضاء في نطاق خلال الفئة، البنية أو الوحدة نمطية الخاصة بها.

  • التأهيل. التعليمات البرمجية خارج الفئة، البنية أو الوحدة النمطية يجب أن تُأهل اسم متغير العضو مع اسم الفئة أو البنية أو الوحدة النمطية. التعليمات البرمجية خارج الإجراء أو المقطع لا يمكنها الإشارة إلى أي من المتغيرات المحلية داخل هذا إجراء أو المقطع.

  • مدة البقاء. المتغير المحلي من نوع Static له مدة بقاء أطول من مدة بقاء الإجراء الذي تم تعريفه به. تعتمد حدود مدة بقاء المتغير على أين تم تعريف الإجراء وما إذا كان Shared.

    تعريف الإجراء

    تمت تهيئة المتغير

    المتغير يتوقف للخروج

    في وحدة نمطية

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

    عند توقف تنفيذ البرنامج الخاص بك

    في فئة أو بنية Shared

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

    عند توقف تنفيذ البرنامج الخاص بك

    في فئة أو بنية، ليست Shared

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

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

استكشاف الأخطاء وإصلاحها

  • ترتيب التنفيذ. العبارة Dim ليست في حد ذاتها عبارة قابله للتنفيذ. مع ذلك، إذا تم تهيئة متغير أو أكثر بواسطتها، عمليات التهيئة تُعامل على أنها عبارات التعيين. وهذا يعني أن قيمة المتغير تخضع للخطوات التالية:

    1. عند الإدخال الأول في عنصر التعليمات البرمجية لتعريف المتغير، يقوم Visual Basic بتهيئته إلى القيمة الافتراضية لنوع البيانات الخاص به.

    2. عندما يصل التنفيذ لعبارة المتغير Dim يقوم Visual Basic بتهيئته للقيمة التي تم توفيرها في العبارة Dim .

    3. عندما يرجع التنفيذ إلى عبارة المتغير Dim يقوم Visual Basic بتعيينه مرة أخرى إلى القيمة التي تم توفيرها في العبارة Dim .

    هذا له الآثار التالية عند استخدام العبارة Dim لتهيئة متغير:

    • إذا استخدمت المتغير قبل تنفيذ العبارة Dim، تكون قيمته هي القيمة الافتراضية لنوع البيانات الخاص به، وليس القيمة التي تم توفيرها في العبارة Dim .

    • إذا لم يصل التنفيذ إلى العبارة Dim أبداً، لن يتم تهيئة المتغير إلى القيمة التي تم توفيرها في العبارة Dim أبداً.

    • إذا قمت بتغيير القيمة وثم قمت بالرجوع إلى العبارة Dim، يتم استبدال القيمة المتغيرة بالقيمة التي تم توفيرها في العبارة Dim .

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

مثال

يقوم المثال التالي بتعريف المتغيرات باستخدام العبارة Dim مع العديد من الخيارات.

' The following statement declares and initializes a Long variable.
Dim startingAmount As Long = 500
' The following statement declares a variable that refers to a Button 
' object, creates a new Button object, and assigns it to the variable.
Dim switchButton As New System.Windows.Forms.Button
' The following statement declares a variable that can only be 
' accessed by code in the same class, structure, or module.
Private homeTelephone As String = ""
' The following statement declares a local variable that always retains
' its value, even after its procedure returns to the calling code.
Static totalSales As Double
' The following statement declares a variable that refers to an array.
Dim highTemperature(31) As Integer
' The following statement declares and initializes an array variable 
' that holds 4 Boolean check values.
Dim checkValues() As Boolean = {False, False, True, False}

راجع أيضًا:

المهام

كيفية القيام بما يلي: تعريف مثيل من النوع المجهول

كيفية القيام بما يلي: تعريف الكائن عن طريق استخدام مُهيئ الكائن

المرجع

عبارة const في (Visual Basic)

كشف Vsual Basic) ReDim)

خيار عبارة Visual Basic) Explicit)

المبادئ

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

الصفائف في Visual Basic

مهيئات الكائن أنواع مسماة و مجهولة

أنواع مجهولة

مهيئات الكائن أنواع مسماة و مجهولة

استدلال الـنوع المحلي