تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Object Initializers من جديد VB2008
#1
كاتب الموضوع : samerselo


تمكنك Object Initializers من تحديد خصائص غرض معقد ضمن تعبير واحد وتستخدم لتعريف متغيرات من كلا من الأنواع المعروفة والمجهولة
فلو فرضنا أنه لدينا فئة بسيطة Employee معرفة على الشكل

كود :
Public Class Employee
Private _name As String
Private _Salalry As Short
Private _Address As String

Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Public Property Salary() As Short
Get
Return _Salalry
End Get
Set(ByVal value As Short)
If value > 0 Then
_Salalry = value
End If
End Set
End Property

Public Property Address() As String
Get
Return _Address
End Get
Set(ByVal value As String)
_Address = value
End Set
End Property
End Class
يمكننا باستخدام تعريف متغير يشير إلى تلك الفئة واسناد الخصائص كما في الكود التالي مع اننا لسنا مضطرين هنا لضبط قيم كافة الخصائص التي تحتويها الفئة فنقوم بضبط قيم الخصائص التي نحتاج لضبطها فقط

كود :
Dim Empl1 As Employee = New Employee With {.Name = "Bassam", .Salary = 8000}

Dim Empl3 As New Employee With {.Name = "Reem", .Salary = 10000}
كما يمكننا اختصار قسم AS هنا فيمكن كتابة التصريح كما يلي وذلك اعتماد على local type inference

كود :
Dim Empl2 = New Employee With {.Name = "Mazen", .Salary = 8500}
بينما كنا في السابق وباستخدام نفس الفئة كما يلي

كود :
Dim Empl2 As New Employee
With Empl2
.Name = "Ahamd"
.Salary = 11500
End With
وإن كانت لدينا فئة تحتاج لتمرير قيم لمشيد الفئة مثل الفئة Person مثلا فيمكننا أيضا استخدام نفس الطريقة لضبط خصائص أخرى لايتم تمريرها لمشيد الفئة

كود :
Dim Per1 As New Person("Ghassan") With {.Address = "Damas"}
كما تستخدم هذه الطريقة أيضا لتعريف الأنواع المجهولة

كود :
Dim Visitor = New With {.Name = "Mussa", .Account = 232536}
وكما نلاحظ من طريقة التعريف فصيغة تعريف الأنواع المعروفة مماثلة في الشكل للأنواع المجهولة ففي الأنواع المعروفة لاحظ وجود اسم الفئة بعد الكلمة new بينما عندما نعرف نوعا مجهولا لايوجد اسم للفئة بعد الكلمة new بسبب أن الأنواع المجهولة ليس لها اسم فئة قابلة للاستخدام فعند استخدام فئة معروفة عند التصريح يجب أن تكون الخصائص التي نريد ضبط قيمها موجودة فعلا والتصريح ينشئ متغيرا يشير إلى تلك الفئة ومن أجل تعريف النوع المجهول يقوم المترجم بإنشاء فئة جديدة لذلك المتغير تحتوي الخصائص المشار إليها في التصريح ويحدد اسمها عند الترجمة وقد يختلف لاسم من عملية ترجمة لأخرى لذلك لايمكن الاعتماد على اسم الفئات المجهولة ضمن الكود أو التعريف

وإليك بعض الملاحظات الخاصة بالتعريف
- قائمة التعريف بعد With لايمكن أن تكون فارغة
- لايمكن تكرار تعريف قيمة لخاصية أكثر من مرة في نفس التعريف
- يمكن ضبط قيمة خاصية من خاصية أخرى
- في حال كانت إحدى الخصائص فئة يمكن تعشيش التصريح بنفس الطريقة

كود :
Dim cust12 = New Customer With {.Name = "Toni Poe", _
.Address = New AddressClass _
With {.City = "Louisville", _
.State = "Kentucky"}}
- لايمكن استخدام عناصر مشتركة Shared أو للقراءة فقط ReadOnly أو الثوابت أو استدعاء الطرق في القائمة بعد كلمة With
- لايمكن استخدام الخصائص التي تمتلك فهرسا أو المشروطة كمصفوفة مثلا فالتعريفات التالية مثلا غير صحيحة

كود :
'' Not valid.

' Dim c1 = New Customer With {.OrderNumbers(0) = 148662}

' Dim c2 = New Customer with {.Address.City = "Springfield"}
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Object MemberwiseClone Method silverlight 3 315 07-10-15, 02:21 AM
آخر رد: silverlight
  Nullable Value Types في VB2008 oneyemenweb2 0 355 06-10-12, 11:37 PM
آخر رد: oneyemenweb2
  كونترول جديد من مايكروسوفت MsChart Control RaggiTech 1 549 05-10-12, 03:04 PM
آخر رد: RaggiTech
  نوع بيانات جديد (تاريخ) RaggiTech 0 437 05-10-12, 03:34 AM
آخر رد: RaggiTech
  مقال تقني - سلسلة الكائنات Object Serialization بشكل مجمل RaggiTech 0 380 04-10-12, 11:38 AM
آخر رد: RaggiTech
  جديد 2010- اكتب الكود الذي سيستخدم فئتك ثم قم بإنشائها RaggiTech 0 336 03-10-12, 12:27 PM
آخر رد: RaggiTech
  الطرائق المُوَسِّعة Extension Methods من جديد VB2008 RaggiTech 1 446 02-10-12, 07:31 PM
آخر رد: RaggiTech
  الاستدلال المحلي على النوع Local Type Inference من جديد VB2008 RaggiTech 0 407 02-10-12, 09:43 AM
آخر رد: RaggiTech
  الأنواع المجهولة Anonymous Types، من جديد VB 2008 RaggiTech 0 362 02-10-12, 08:57 AM
آخر رد: RaggiTech
  أفضل طريقة لإنشاء كائن جديد - شارك في النقاش RaggiTech 1 329 01-10-12, 11:07 PM
آخر رد: RaggiTech

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


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