استخدام العبارة في (Visual Basic)

يقوم بتعريف بداية الكتلة Using و تكتسب موارد النظام التي يتحكم الكتلة بها بشكل اختياري.

Using { resourcelist | resourceexpression }
    [ statements ]
End Using

الأجزاء

  • resourcelist
    مطلوبة إذا لم توفر resourceexpression. اسرد واحد أو أكثر من موارد نظام التي هذه الكتلة Using تتحكم بها.

  • resourceexpression
    مطلوبة إذا لم توفر resourcelist. متغير مرجع أو تعبير يشير إلى مورد النظام ليتم التحكم بها بولسطة كتلة Using.

  • statements
    اختياري. كتلة من العبارات التي الكتلة Using تنّفذها.

  • End Using
    مطلوبة. ينهي تعريف كتلة Using و يتخلّص من كل الموارد التي تتحكم فيها.

لكل مورد في الجزء resourcelist يحتوي بناء الجملة و الأجزاء التالية:

resourcename As New resourcetype [ ( [ arglist ] ) ]

-أو-

resourcename As resourcetype = resourceexpression

أجزاء قائمة الموارد

  • resourcename
    مطلوبة. مرجع متغير يشير إلى مورد نظام التي كتلة Using تتحكم بها.

  • New
    مطلوبة إذا كان العبارة Using تكتسب المورد. إذا حصلت بالفعل على مورد, استخدم بديل بناء الجملة الثاني.

  • resourcetype
    مطلوبة. فئة المورد. الفئة يجب أن تقوم بتنفيذ واجهة IDisposable .

  • arglist
    اختياري. قائمة من الوسائط تمررها إلى الدالة الإنشائية لإنشاء مثيل resourcetype. انظر قائمة المعلمة

  • resourceexpression
    مطلوبة. متغير أو تعبير يشير إلى مورد نظام من إستيفاء المتطلبات resourcetype. إذا استخدمت بديل بناء الجملة الثاني يجب الحصول على مورد قبل تمرير التحكم إلى العبارة Using .

ملاحظات

في بعض الأحيان يتطلب التعليمات البرمجية مورد غير غامض مثل مؤشر ملف، برنامج تضمين COM أو اتصال SQL. كتلة Using يضمن التخلص من واحد أو أكثر من الموارد مثل عند الانتهاء من التعليمات البرمجية معهم. هذا جعلها متوفرة من أجل التعليمات البرمجية الأخرى للاستخدام.

يتم التخلص من موارد المدارة من قبل حاوي المهملات .NET Framework (GC) دون أي ترميز إضافي على الجزء الخاص بك. لا تحتاج كتلة Using للموارد الغير مدارة.

كتلة Using من الأجزاء الثلاثة: الحصول، الاستخدام و التخلص.

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

  • الاستخدام يعني الوصول إلى موارد وتنفيذ الإجراءات معهم. العبارات بين Using و End Using تمثل "استخدام موارد".

  • التخلص يعني استدعاء أسلوب Dispose على كائن في resourcename. يسمح هذا للكائن لينهي المورد الخاصة به غير الواضح. العبارة End Using يتخلص من الموارد ضمن تحكم كتلة Using .

السلوك

كتلة Using يسلك Try... Finally الإنشاء فيه كتلة Try يستخدم موارد و كتلة Finally تتخلص منهم. لهذا السبب، كتلة Using يضمن التخلص من المورد بغض النظر عن كيفية إنهاء الكتلة. يكون هذا صحيحاً حتى في حالة التي لم تتم معالجة‏‏ استثناء, عدا StackOverflowException.

نطاق متغير كل مورد تم الحصول عليه من قبل عبارة Using الذي يقتصر على Using كتلة.

إذا حددت أكثر من مورد النظام في عبارة Using ، التأثير هو نفسه كما لو كانت الكتلة متداخلة Using أحد في أخرى.

المصنفة‏‏ استثناء معالجة داخل كتلة "استخدام"

إذا كنت تحتاج إلى معالجة ‏‏ استثناء التي قد تحدث داخل كتلة Using, يمكنك إضافة كامل Try... Finally الإنشاء إليه. إذا كنت تحتاج إلى معالجة الحالة حبث عبارة Using هو غير ناجحة في الحصول على مورد يمكنك اختبارها لمعرفة ما إذا كان resourcename هو Nothing.

معالجة بدلاً من كتلة استخدام استثناء مصنفة

إذا احتجت إلى مستوى تحكم أفضل في الحصول على موارد أو كنت في حاجة إضافية تعليمات برمجية في Finally كتلة ، يمكن إعادة كتابة Using حظر كـ Try... Finally الإنشاء. يظهر المثال التالي هيكل إنشاء Try و Using متكافئة في الحصول و للتخلص من resource.

Using resource As New resourceType 
    ' Insert code to work with resource.
End Using
' THE FOLLOWING TRY CONSTRUCTION IS EQUIVALENT TO THE USING BLOCK
Dim resource As New resourceType
Try 
    ' Insert code to work with resource.
Finally 
    resource.Dispose() 
End Try 

ملاحظة

التعليمات البرمجية داخل كتلة Using لا يجب تعيين كائن في resourcename إلى متغير آخر. عند إنهاء من كتلة Using يتم التخلص من مورد و متغير أخر لا يمكن الوصول إلى مورد الذي يشير إاليه.

مثال

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

Public Sub setbigbold(ByVal c As Control)
    Using nf As New System.Drawing.Font("Arial", 12.0F, 
        System.Drawing.FontStyle.Bold)

        c.Font = nf
        c.Text = "This is 12-point Arial bold"
    End Using
End Sub

راجع أيضًا:

المهام

كيفية القيام بما يلي: التخلص من موارد النظام

المرجع

IDisposable

عبارة Visual Basic) Try...Catch...Finally)

System.Drawing

Font