الفرق بين الـ Shared والـ Static في الفيجوال بيسك

26 نوفمبر 2016     396 مشاهدة    0 تعليق
تم النشر في #Visual Basic  #VB.NET 

سنتعرف في هذه المقاله البسيطه على الفرق بين الكلمتين المحجوزتين Shared و Static في لغة الفيجوال بيسك.

طبعاً أريد أن انوه ان هنالك فرقاً واضح بين الكلمة Static في لغة الفيوال بيسك ولغة السي شارب, ونحن ليس بصدد إليه الآن. فالكلمة Shared هي نظيرة للكلمة Static في لغة السي شارب.

إذن ماهو الفرق بي كلمتي Shared  و Static؟!!

ببساطه عند إستخدامنا للكلمة Shared في أي عنصر داخل Class أو Structure فأنه يسمح بمشاركة هذا العنصر والوصول إليه على نطاق التطبيق, وهذا مخالف تماماً عنما هو معروف في العناصر الغير مشاركة حيث أن كل كائن من الفئه له نسخة مختلفة عن بقية الكائنات.

ويتم تعيين أي عنصر من نوع Shared إذا أردنا الوصول إليه دون الحاجه إلى انشاء كائن.

Public Class Crypto
  Public Shared Function Encrypt(ByVal plainText As String) As Byte()
    ' Encryption code goes here
  End Function

  Public Shared Function Decrypt(ByVal encryptedText() As Byte) As String
    ' Decryption code goes here
  End Function
End Class

فلو نلاحظ في المثال أعلاه تم تعريف الفئة Crypto لتحتوي على دالتين للتشفير وفك تشفير نص ما, فلو تمعنا قليلاً فإنه لا حاجه لإنشاء كائن في كل مره احتجنا أن نشفر نص معين أو نقوم بفك تشفيره. وهو نفس الحال الملاحظ في دوال الرياضيات الموجوده في الفئة Math  في الدوت نت, حيث أنها دوال خدمية ولا نحتاج إنشاء كائن في كل مرة لإستخدامها.

أما بالنسبة للكلمة Static فهي تستخدم في المتغيرات المحلية للدوال والإجراءات لتمكن تلك المتغيرات من الإحتفاظ بقيمتها عند إنتهاء الدالة أو الإجراء.

Function UpdateSales(ByVal sale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += sale
    Return totalSales
End Function

الآن الموضوع يختلف نوعاً ما في مثالنا هذا حيث تم تعريف المتغير totalSales من نوع Static وذلك للإحتفاظ بقيمة إجمالي المبيعات في كل مرة يتم فيها إستدعاء الدالة UpdateSales.

فأعتقد أن الفرق واضح تماماً بين الكلمتين Shared و Static فحاول أن تستخدم الكلمة المناسبة في المكان المناسب.

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


اكتب تعليقك