تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Auto-Implemented Properties In Visual Basic 2010
#1
الخصائص المعرفة تلقائياً Auto-Implemented Properties تمكنك من كتابة الخصائص الخاصة بفئتك دون الحاجة لكتابة حقول Get & Set يدوياً , وفي هذه الحالة يقوم مترجم Visual Basic بتوليد Private Fields من أجلك كما يقوم أيضاً بتوليد حقول Get و Set تلقائيا أثناء وقت الترجمة Compile Time (هذه الميزة تشبه إلى حد ما ال Automatic Properties والموجودة في #C) .


الخاصية المعرفة تلقائياً تعد مكافئة لخاصية ذات حقل خاص Private field المثال التالي يوضح كيفية كتابتها:
كود :
Property Prop2 As String = "Empty"
الكود التالي يوضح الكود المكافئ لكيفية تعريف خاصية مماثلة للخاصية المعرفة في المثال السابق:


كود :
Private _Prop2 As String = "Empty"
Property Prop2 As String
    Get
        Return _Prop2
    End Get
    Set(ByVal value As String)
        _Prop2 = value
    End Set
End Property
يمكن تعريف الخصائص المعرفة تلقائيا مع تحديد القيمة الافتراضية لتلك لخاصية في سطر واحد, المثال التالي يوضح كيفية ذلك:


كود :
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()


Backing Field


عند استخدام خاصية معرفة تلقائياً يقوم المترجم بإضافة حقل خفي والذي سيحمل قيمة تلك الخاصية , هذا المتغير يحمل نفس النوع الذي تم به تعريف تلك الخاصية كما يحمل نفس الاسم مسبوقاً بعلامة (_) , على سبيل المثال إذا قمت بتعريف خاصية بالاسم ID سيكون اسم المتغير الخفي _ID , وفي هذه الحالة إذا قمت بتعريف متغير آخر ضمن نفس الفئة يحمل نفس الإسم _ID فإن ذلك سيحدث لبساً وسيقوم المترجم عندها بتوليد خطأ أثناء الترجمة .ال Backing field يتميز بالخصائص التالية:


  • محدد الوصول ِAccess Modifier لهذا الحقل دائما Private حتى وإن كان محدد الوصول للخاصية المرتبطة به مختلفاً عنه كأن يكون Public.
  • إذا تم تعيين الخاصية المعرفة تلقائياً على أنها مشتركة Shared فإن Backing field يكون أيضاً مشتركاً.
  • المواصفات التي تنطبق على الخصائص المعرفة تلقائياً Attributes لا تنطبق على ال Backing field.
  • يمكن الوصول لل Backing field من خلال الكود أو من خلال أداوت التنقيح Debugging Tools مثل Watch Window ومع ذلك لايمكن الوصول إليه من خلال Intellisence.



تهيئة الخصائص المعرفة تلقائياً Initializing Auto-Implemented Properties


  • يمكن تهيئة خاصية معرفة تلقائياً تماماً مثل تهيئة أي متغير, عندما تقوم بذلك فإن المترجم سيقوم باختبار تلك التهيئة وتمريرها للإجراء Set , بحيث يمكن أيضًا تعيين القيمة الافتراضية والتي ستحملها الخاصية والتي سيحملها لاحقاً ال Backing field بدوره , المثال التالي يوضح ذلك:

كود :
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
  • لا يمكن تهيئة خاصية معرفة تلقائياً إذا كانت أحد أعضاء واجهة Interface أو إذا كانت مجردة Abstract (محددة بال MustOverride Keyword)
  • يمكن تهيئة خاصية معرفة تلقائياً لسجل Structure فقط إذا كانت مشتركة Shared.
  • عند تعريف خاصية معرفة تلقائياً كمصفوفة فلن تتمكن من تحديد أبعادها بشكل صريح , ومع ذلك تستطيع إعطائها قيماً بواسطة تهيئتها كما يوضح المثال التالي:

كود :
Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}


متى يمكن استخدام الخصائص المعرفة تلقائياً؟


الخصائص المعرفة تلقاءياً مفيدة كثيراً ويمكن استخدامها في سيناريوهات مختلفة , ولكن توجد بعض الحالات التي يتعذر فيها استخدامها , والتي لابد فيها من تعريف الخصائص بالطريقة القياسية أو بالطريقة الموسعة . لن تتمكن من استخدام الخصائص المعرفة تلقائياً في الحالات التالية:
  • عند الحاجة لإضافة شفرات إضافية إلى أجزاء Get & Set , مثلاً عندما تريد التحقق من القيم الواردة إلى الخاصية كأن تقوم مثلاً بالتحقق من أن قيمة نصية واردة تحتوي على رمز معيّن قبل إسناد تلك القيمة إلى الخاصية.
  • عند تحديد كيفية الوصول إلى الأجزاء Get & Set كأن تكون بحاجة مثلاً لجعل الجزء Get يمكن الوصول إليه Public في حين يكون جزء Set محمياً أو خاصاً Protected or Private .
  • عندما تكون الخاصية للكتابة أو للقراءة فقط ReadOnly أو WriteOnly.
  • عندما الحاجة لإضافة مواصفات Attributes إلى Backing field.
  • عند الحاجة لإضافة تعليقات XML لل Backing field.

تحويل الخصائص المعرفة تلقائياً إلى خصائص موسّعة Extended Properties


عندما ترغب في توسيع خاصية معرفة تلقائياً إلى خاصية قياسية أو موسعة , سيمكّنك محرر الكود عندها من القيام بذلك بحيث سيقوم بتوليد أجزاء Get & Set بالإضافة إلى السطر End Property تلقائياً وذلك بالوقوف في سطر فارغ أسفل تعريف الخاصية المعرفة تلقائياً وكتابة الحرف G (من أجل الجزء Get) أو الحرف S (من أجل الجزء Set) , ومن ثم الضغط على زر Emter, يقوم محرر الكود بتوليد أجزاء Get & Set من أجل القراءة /ReadOnly أو الكتابة فقط WriteOnly عند الضغط على Enter مباشرة بعد تعريف الخاصية.


منتهى الروعة! أليس كذلك؟


مترجم بتصرف.
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مقال] إضافة تقارير Crystal report إلى فيجوال 2010 اسامه الهرماوي 3 5,302 05-10-21, 01:38 PM
آخر رد: mohameddahab867
  ربط الفيجوا ل بيسك 2010 بأكسيس 2010 اسلام الكبابى 0 1,822 04-08-21, 01:27 AM
آخر رد: اسلام الكبابى
  تفعيل برنامج Visual Studio 2019 Adilo idabdellah 4 11,512 20-05-20, 11:48 AM
آخر رد: الفاضي
Information تحميل برنامج الفيجوال بيسك 2010 download visual basic 2010 mohamed atef2018 4 64,939 15-03-19, 07:50 PM
آخر رد: العتيق
Video [درس فيديو] طريقة تحميل وتثبيت visual studio 2017 مع جميع التحديثات Ikode 1 10,139 11-08-18, 08:48 PM
آخر رد: galas
Rainbow Toolbox in VB.NET - Common Controls - Lesson One - Button Control Properties Genius Live 19 14,877 17-06-17, 01:11 PM
آخر رد: نوره
  كيفية تغيير خلفية محرر الكود في Visual Studio 2010 إلى صورة أبو عمر 0 4,192 06-09-15, 06:44 PM
آخر رد: أبو عمر
  [VB.NET] الأتصال بقاعدة بيانات اكسس2007 مع فجوال 2010 raaddawood 1 3,068 27-05-15, 03:40 PM
آخر رد: قناص المدينة
  من اين تبداء مع Visual Studio واى اصدار تختار ali.alfoly 4 4,473 30-12-13, 11:10 PM
آخر رد: essabar
  SkinCrafter For VB.NET 2010 مبرمج أوتار 13 12,114 25-05-13, 01:10 PM
آخر رد: shaker.soft

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم