استخدام ref keyword في الـ #C

استخدام المعرف “ref” في لغة #C هو لتمرير الـ Reference/Address للمتغير في الذاكرة، بدلًا من تمرير قيمتة، وهذا يسمح بتغيير/تعديل قيمة متغير (بعيد).

افتراضيًا، عند تمرير متغير إلى دالة معينة ، ما يتم تمريره فقط هو قيمته Value :-

مثال :-

عند تشغيله :-

قمنا، بتعريف متغير (i) من نوع integer ( )،  ثم طبعنا قيمته

( )، وبعدها قمنا باستدعاء الدالة changeInt ومررنا المتغير لها، هذه الدالة تقوم بتغيير قيمة i إلى 5، ومن ثم نطبع المتغير مره أخرى بعد تغيير قيمته، لنرى ماذا تغير ؟

عند تشغييل الكود لاحظنا أن قيمة (i) لم تتغير، وتم طباعة قيمته السابقة ! ( 1 و 1 )،  والسبب هو أن المتغيرات يتم تمرير قيمتها فقط، إلى الدالة ولا يتم تمرير المتغير نفسه وعنوانه.


نلاحظ المثال التالي باستخدام المعرف ( ref )

وعند تشغيله :-

استطعنا هنا أن نغير قيمة المتغير ( i ) البعيد وعند طباعته حصلنا على ( 1 و 5 )، من خلال الدالة،  لأنه تم تمريره كـ Reference، تم تمرير عنوان المتغير وليست قيمته فقط، وعندما نمرر عنوان متغير بعيد، فإننا نتمكن من تغيير قيمته من دالة أخرى.

وهذا ما يسمى بـ   SharedByValue vs SharedByReference

LevelDB – قواعد بيانات بمبدأ Key-Value في تخزين البيانات

Brotli – أحد أفضل خوارزميات ضغط البيانات

Model لـ TensorFlow: لإكتشاف التهديد، الإهانة والكراهية في الجملة (برمجيًا)

أمثلة على لغات عالية، متوسطة، منخفضة المستوى

طرق/أساليب كتابة المتغيرات في البرمجة

حزمة SDK (الرسمية) للـ Firebase على الـ #C ؟؟

مطورو الدوت_نت ( #C أو VB.NET ) يلاحظون قلة الدعم في ما يخص المكتبات والخدمات، لم يعد أحد ينظر باهتمام إلى منصة التطوير للـ Windows بشكل عام.


ولكن فيما يخص قواعد البيانات !!

نلاحظ وجود حزم SDK رسمية للـ MongoDB و شبه رسمية MySQL Connectors أيضًا RethinkDB Connectors ، تدعم الدوت_نت.


فيما يخص قواعد بيانات Firebase :-

لايوجد حزمة SDK رسمية للـ Firebase على الـ #C، في حين أنهم أكدو أن إنشاء حزمة رسمية هي على خارطة التطوير الخاصة بهم منذ 2015 تقريبًا ولم يتم نشرها إلى الآن، نظرًا إلى ليست جاهزة إلى الإعتماد عليها بشكل رسمي.


ولكن يوجد بعض مكتبات REST الخاصة بالـ Firebase للـ #C ، غير رسمية

مثل :

1 – FireSharp
2 – FirebaseSharp


المصدر : https://medium.com/step-up-labs/firebase-c-library-5c342989ad18