مشاريع
أقسام المقالات
Total Articles: 19
مؤتمرات وأحداث
مراكز وانجازات
.net 2008 Course
آخر 10 مواضيع
كتب وملخصات
Tips & Tricks
Object Initializers
الخميس، ٢٢ مايو ٢٠٠٨

            تمكنك 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 Empl3 = New Employee With {.Name = "Mazen", .Salary = 8500}


Dim Empl1 As New Employee With {.Name = "Reem", .Salary = 10000}


كما يمكننا اختصار قسم AS هنا فيمكن كتابة التصريح كما يلي وذلك اعتماد على local type inference


Dim Empl5 = New Employee With {.Name = "Ahmad"}


بينما كنا في السابق وباستخدام نفس الفئة كما يلي


        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"}}


Console.WriteLine(cust12.Address.State)


 


- لا يمكن استخدام عناصر مشتركة Shared أو للقراءة فقط ReadOnly أو الثوابت أو استدعاء الطرق في القائمة بعد كلمة With


- لا يمكن استخدام الخصائص التي تمتلك فهرسا أو المشروطة كمصفوفة مثلا فالتعريفات التالية مثلا غير صحيحة


'' Not valid.


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


' Dim c2 = New Customer with {.Address.City = "Springfield"}


 

تم التحرير بواسطة samerselo @ ٩:٠٠ م  
0 Comments:
إرسال تعليق
<< Home
 
الصفحة الرئيسية
Google Search
Google
       

كتاب المدونة
من نحن ؟
مجموعة من الكتاب باللغة العربية بلغة الدوت نت ، نلتقي هنا لكي نتشارك الخبرات والمعلومات حول الجديد في عالم الدوت نت
ارشيف المواضيغ والمقالات السابقة
VB.net <> C#

الفروقات بين سي شارب و في بي . نت
روابط ومواقع تقنية عربية
عداد الزيارات
Locations of visitors to this page
أشخاص شرفونا بزيارتهم
مركز التحميل
© 2005 DotNet4Arab Blogspot Template by Isnaini Dot Com