الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Object Initializers

مغلق
بدأه محمد سامر أبو سلو في 1 ديسمبر 2007 · 3 رد · 2,710 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تمكنك 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"}

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

بارك الله فيك

ارجو تجميع موضوعاتك الخاصة بالجديد في VS2008 وتثبتها تحت موضوع واحد ليسهل الرجوع إليها

لا تَقُولن لِشيءٍ ذَا نَاقِصٌ ... وَلَكن أَعمل وَقُل ذَا أكملُ

#3

إن شاء الله

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

شكرا

هذا الموضوع مغلق.

مواضيع مشابهة