الـ Key Properties وأهميتها في الفيجوال بيسك

25 مارس 2017     350 مشاهدة    0 تعليق
تم النشر في #VB  # Anonymous Types  # Key Properties 

من المعروف في الفيجوال بيسك عند تعريف متغير ما - ليس في كل الحالات - يجب أن نحدد نوع المتغير, لكن في الغالب يتم تحديد نوع المتغير وذلك عند إستخدام الكلمه المحجوزه Dim ,ولكن هناك أنواع متغيرات يتم تعريفها بدون نوع معين, يطلق عليها الأنواع المجهوله والتي يطلق عليها Anonymous Types.

Dim person = New With { .Id = 1, .FirstName = "Hisham", .LastName = "Bin Ateya" }

فالكائن person هو من نوع مجهول يتحتوي على ثلاث خواص, Id, FirstName, LastName. وبعدها يمكنك تغيير قيمة أي خاصيه للكائن كما هو الحال في بقية الكائنات.

في مقال اليوم أحببت أن أتطرق للـ Key Properties أو الخواص المفتاحيه, فلغة الفيجوال بيسك قدمت لنا الكلمة Key لتعيين ما إذا كانت الخاصيه مفتاحيه أم لا.

دعونا نستخدم الكلم Key للخاصية Id في مثالنا السابقز

Dim person = New With { Key .Id = 1, .FirstName = "Hisham", .LastName = "Bin Ateya" }

وبهذا أصبحت الخاصيه Id خاصيه مفتاحيه, ماذا يعني هذا؟!!

يمكن الفرق بين الخواص المفتاحيه والخواص الغير مفتاحيه في التالي:

  • تسمح الخواص المفتاحيه بتحديد ما إذا كائنين متساويين عند مقارنتهما
  • تعتبر الخواص المفتاحيه خواص قابلة للقراءه فقط
  • يتم إستخدام قيم الخواص المفتاحيه لتوليد الـ hash code تبع النوع المجهول

فلنفترض لدينا المثال التالي:

Dim person1 = New With { Key .Id = 1, .FirstName = "Hisham", .LastName = "Bin Ateya" }
Dim person1 = New With { Key .Id = 1, .FirstName = "Abdullah", .LastName = "Bin Ateya" }
Dim person2 = New With { Key .Id = 2, .FirstName = "Ahmed", .LastName = "Bin Ateya" }

Console.WriteLine(person1.Equals(person2)) ' True
Console.WriteLine(person1.Equals(person3)) ' False

فمثل ما ذكرنا سابقاً فالكائنين الأول والثالث سيكونان متساويين وذلك لأن قيمة الخاصية المفتاحيه Id متساوية, بغض النظر عن قيمة بقية الخواص, أما الكائنين الأول والثالث فهما غير متساويين لأن الخاصية المفتاحيه Id غير متساويه.

ونفس الشيء بالنسبة لقيمة الداله GetHashCode()

Console.WriteLine(person1.GetHashCode() = person2.GetHashCode()) ' True
Console.WriteLine(person1.GetHashCode() = person3.GetHashCode()) ' False

هذا ببساطه عن الخواص المفتاحيه وأهميتها في الفيجوال بيسك, وخصوصا عند إستخدام الـ Anonymous Types.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك