تقييم الموضوع :
  • 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 مباشرة بعد تعريف الخاصية.


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


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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Information تحميل برنامج الفيجوال بيسك 2010 download visual basic 2010 mohamed atef2018 0 255 09-07-16, 08:30 PM
آخر رد: mohamed atef2018
  كيفية تغيير خلفية محرر الكود في Visual Studio 2010 إلى صورة أبو عمر 0 565 06-09-15, 06:44 PM
آخر رد: أبو عمر
  [VB.NET] الأتصال بقاعدة بيانات اكسس2007 مع فجوال 2010 raaddawood 1 571 27-05-15, 03:40 PM
آخر رد: قناص المدينة
Rainbow Toolbox in VB.NET - Common Controls - Lesson One - Button Control Properties Genius Live 18 4,209 26-03-14, 09:21 PM
آخر رد: رابح11
  من اين تبداء مع Visual Studio واى اصدار تختار ali.alfoly 4 1,642 30-12-13, 11:10 PM
آخر رد: essabar
  SkinCrafter For VB.NET 2010 مبرمج أوتار 13 4,755 25-05-13, 01:10 PM
آخر رد: shaker.soft
  معلومة ::: Call Into The .NET Framework From Existing Visual Basic 6.0 Apps RaggiTech 1 417 06-10-12, 10:40 PM
آخر رد: RaggiTech
  معلومة ::: Visual Studio 2005 Automation Samples RaggiTech 1 362 06-10-12, 08:00 PM
آخر رد: RaggiTech
  خصائص جميع أنواع البيانات في Visual Basic RaggiTech 0 1,075 03-10-12, 01:48 PM
آخر رد: RaggiTech
  جميع إختصارات ال Visual studio .net RaggiTech 0 528 03-10-12, 12:29 PM
آخر رد: RaggiTech

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


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