شروحات متفرقة

نوع البيانات dynamic في لغة سي شارب

dynamic2

عند تعريف متغير يجب اعطائه نوعاً ( اما ان يكون رقمياً (int,float,double … ) أو نصياً (string) او منطقياً (bool) او نوعاً آخر هذا الامر واجب عند تعريف اي متغير في اللغات ذات النوع الثابت مثل (C#,Java,C++,Vb.net) ولكن في اللغات الديناميكية مثل ( جافا سكربت ، بايثون ، روبي ) يمكنك تعريف المتغيرات دون تحديد نوع البيانات كيف ذلك ؟ بكل بساطة عند تنفيذ البرنامج يقوم الكومبايلر بتحديد النوع طبقاً للقيمة المخزنة بداخله .

في الاصدار 4.0 من لغة سي شارب قامت شركة مايكروسفت بأضافة نوع جديد من البيانات وهو dynamic هذا النوع يمكننا من تخزين اي نوع من البيانات داخل اي متغير معرف على انه dynamic لاحظ المثال التالي :

في البداية أخذ المتغير قيمة رقمية وقمنا بطباعة هذه القيمة وهي (5) وفيما بعد قمنا بتغير القيمة ووضعناها على انها string وليس هنالك اي مشكلة بعد ذلك قمنا بطباعة قيمة المتغير X فماذا سيظهر على شاشة المخرجات ؟؟

ناتج تنفيذ البرنامج هو : 

X = 5

X = Ahmed

كيف ذلك ؟ بكل بساطة لا يتم تحديد نوع البيانات الا عند تنفيذ البرنامج (Run Time) وعند تنفيذ البرنامج يتم تعيين نوع البيانات حسب القيمة المخزنة في ذلك المتغير وبالطبع سيقبل تغيير هذا النوع فيما بعد وهذا ما قمنا بفعله في المثال السابق .

إذ يمكن الآن تعريف متغير واحد ليشمل جميع انوع البيانات وذلك بتحديد نوع المتغير على انه dynamic .

الفائدة العظمى : وهو استخدام مثل هذا النوع في الوظائف Methods بكل بساطة عند استخدام مثل هذا النوع من البيانات لم نعد بحاجة إلى استخدام overloading methods لأننا مع استخدام النوع dynamic يمكننا ارسال اي قيمة سواء كانت رقمية بأنواعها او نصيبة او حتى منطقية ولكن على شرط ان نقوم باستخدام operator مناسبة مع القيم فعند استخدام هذا النوع في وظيفة تقوم على الضرب وارسلنا لها قيماً نصياً فبهذه الحالة سيظهر لدينا خطأ عند تنفيذ البرنامج .

لاحظ في البرنامج السابق استطعنا ان نرسل انواع مختلفة من البيانات (double,float,string) دون ان ننشىء overloading methods فقط بوظيفة واحدة مع استخدام النوع dynamic .

عن الكاتب

أحمد أبو فارس

احمد ابو فارس طالب جامعي يدرس علم الحاسوب في جامعة البلقاء التطبيقية مهتم في عالم التكنولوجيا , مبرمج يجيد العمل على عدة لغات , محترف تصميم ومونتاج ، وأحد اعضاء مجموعة شعاع والقائمين عليها.