01-10-12, 06:29 PM
كاتب الموضوع : 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}
كود :
Dim Empl2 = New Employee With {.Name = "Mazen", .Salary = 8500}
كود :
Dim Empl2 As New Employee
With Empl2
.Name = "Ahamd"
.Salary = 11500
End With
كود :
Dim Per1 As New Person("Ghassan") With {.Address = "Damas"}
كود :
Dim Visitor = New With {.Name = "Mussa", .Account = 232536}
وإليك بعض الملاحظات الخاصة بالتعريف
- قائمة التعريف بعد With لايمكن أن تكون فارغة
- لايمكن تكرار تعريف قيمة لخاصية أكثر من مرة في نفس التعريف
- يمكن ضبط قيمة خاصية من خاصية أخرى
- في حال كانت إحدى الخصائص فئة يمكن تعشيش التصريح بنفس الطريقة
كود :
Dim cust12 = New Customer With {.Name = "Toni Poe", _
.Address = New AddressClass _
With {.City = "Louisville", _
.State = "Kentucky"}}
- لايمكن استخدام الخصائص التي تمتلك فهرسا أو المشروطة كمصفوفة مثلا فالتعريفات التالية مثلا غير صحيحة
كود :
'' Not valid.
' Dim c1 = New Customer With {.OrderNumbers(0) = 148662}
' Dim c2 = New Customer with {.Address.City = "Springfield"}