للقراءة فقط (Visual Basic)
تحدد أن متغير أو خاصية يمكن أن تقرأ لكن لا تكتب.
ملاحظات
القواعد
**تعريف السياق.**يمكنك استخدامReadOnly فقط في مستوى الوحدة النموذجية. هذا يعني سياق التعريف لعنصر ReadOnly يجب أن يكون فئة، بنية، أو وحدة نمطية و لايمكن أن يكون ملف مصدر، مساحة اسم، أو إجراء.
معدلات مجتمعة. لايمكنك تعيين ReadOnly معاً مع Static في نفس التعريف.
تعيين قيمة. التعليمات البرمجية المستهلكة لخاصية ReadOnly لايمكنها تعيين القيمة الخاصة بها. لكن التعليمات البرمجية التي تصل للمخزن الكامن يمكنها تعيين أو تغيير القيمة في أي وقت.
يمكنك تعيين قيمة لمتغير ReadOnly فقط في التعريف الخاص به أو في منشئ الفئة أو البنية التي تم تعريفه بها.
متى يمكنك استخدام متغير ReadOnly
هناك مواقف لايمكنك فيها استخدام عبارة const في (Visual Basic) لتعريف و تعيين قيمة ثابت. على سبيل المثال، عبارة Const قد لاتقبل نوع البيانات الذي تريد تعيينه، أو قد لا تكون قادر على حساب قيمة في وقت التحويل البرمجي مع تعبير ثابت. قد لاتعرف حتى القيمة في وقت التحويل البرمجي. في هذه الحالة، يمكنك استخدام متغير ReadOnly لتقييد قيمة ثابتة.
ملاحظة الأمان |
---|
إذا كان نوع بيانات المتغير هو نوع مشار، كمثيل صفيف أو فئة، يمكن تغيير أعضائه حتى لو كان المتغير نفسه ReadOnly. فيما يلي مثال يوضّح ذلك. |
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub changeArrayElement()
characterArray(1) = "M"c
End Sub
عند تهيئته، الصفيف المشار إليه من قبل characterArray() يقيد "x", "y" و "z". لأن المتغير characterArray هو ReadOnly, لايمكنك تغيير قيمته حينما تقوم بتهيئته، وهذا يعني، لايمكنك تعيين صفيف جديد له. مع ذلك، يمكنك تغيير القيم لعضو أو أكثر من الصفيف. التالي هو استدعاء لإجراء changeArrayElement, الصفيف المشار إليه من قبل characterArray() يقيد "x", "M", و "z".
لاحظ أن هذا مشابه لتعريف معلمة إجراء لتكون Visual Basic) ByVal), الذي تمنع الإجراء من تغيير وسيطة الاستدعاء نفسها لكن يسمح له لتغيير أعضائه.
مثال
المثال التالي يعرف خاصية ReadOnly للتاريخ الذي تم تعيين الموظف به تخزن الفئة قيمة الخاصية داخليا كمتغير Private، و فقط التعليمات البرمجية داخل الفئة يمكنها تغيير تلك القيمة. مع ذلك، الخاصية هي Public, و أي تعليمات برمجية يمكنها الوصول إلى الفئة قراءة الخاصية.
Class employee
' Only code inside class employee can change the value of hireDateValue.
Private hireDateValue As Date
' Any code that can access class employee can read property dateHired.
Public ReadOnly Property dateHired() As Date
Get
Return hireDateValue
End Get
End Property
End Class
المعدل ReadOnly يمكن استخدامه في تلك السياقات.