x32x01
  • بواسطة x32x01 ||
كـ Performance استخدام var أفضل من استخدام dynamic
وده بسبب إن عندنا مع var النوع بيتحدد وقت الـ Compilation وقت ما الكود بيتعمله Build
الـ Compiler بيشوف القيمة اللي إنت حاططها في المتغير وبيقول ده مثلاً int أو string أو غيره فبالتالي النوع بيبقى ثابت
وده سبب إن لو حاولت تغير النوع بعد ما عرفته بيديك Compilation Error ومش بيسمح بده
وكمان مش بيسمح إنك تعمل Declaration فقط زي كده var x وتسكت لإنه بيكون محتاج يعرف النوع بناءً على القيمة

✅ var number = 10;
🚫 number = "Ahmed";
مش مسموح تغيير النوع
الكود ده بيوضح إن النوع ثابت ولا يمكن تغييره بعد التعريف

أما بقى الـ dynamic معناها إن النوع بيتحدد وقت الـ Runtime لما البرنامج يشتغل
معناه إنك تقدر تغير النوع لأي حاجة بس المشكلة إن الـ Compiler مش هيعملك أي Check وقت الكتابة فلو فيه خطأ هيبان بس وقت التشغيل وده من ضمن عيوبها للأسف
✅️ dynamic value = 10;
✅️ value = "Ahmed";
✅ value = true;
الكود ده بيوضح إن النوع متغير وبيتحدد أثناء التشغيل

نيجي بقى للـ Object​

الـ Object هو النوع الأساسي اللي كل الأنواع في C# بتتوارث منه
فيه تشابه كبير بينه وبين dynamic من ناحية إنك تقدر تخزن فيه أي نوع بيانات
بس الفرق إن مع Object لما تيجي تستخدم القيمة المخزنة لازم تعمل Casting للنوع اللي عايز تستخدمه
✅️ object value = 10;
🚫 int number = value;
هيديك هنا Error يقولك
You cannot implicitly convert object to int
فلازم نعمل Explicit Casting
✅️ int number = (int)value;
وده الكود ده بيوضح إن مع Object لازم تعمل Casting علشان تستخدم القيمة

أما مع dynamic مش محتاج تعمل Casting​

Code:
dynamic value = 10;
int number = value;
وكه الكود ده بيوضح إن مع dynamic مش محتاج تعمل Casting

من ناحية الأداء Object أفضل من dynamic لأن مع Object النوع بيتم تحديده وقت الـ Runtime زي dynamic لكن بدون الـ Overhead الإضافي الخاص بالـ dynamic
لكن Object أقل مرونة لأنك محتاج تعمل Casting كل مرة تستخدم فيها القيمة المخزنة

الخلاصة var أفضل من حيث الأداء dynamic أكثر مرونة لكنه أبطأ شوية و Object مناسب للاستخدام لو محتاج تخزن أي نوع بيانات بس مع بعض القيود
ده مش معناه إن dynamic وحشة وملهاش استخدامات بالعكس dynamic مفيدة جداً في مواقف معينة زي لما تشتغل مع مكتبات أو APIs بتتعامل مع أنواع بيانات متغيرة أو مش معروفة أثناء كتابة الكود

لما تشتغل مع مكتبات بتتعامل مع JSON أو البيانات اللي جاية من مصادر خارجية
Code:
dynamic json = JsonConvert.DeserializeObject
("{\"name\": \"Ahmed\", \"age\": 25}");
string name = json.name;
int age = json.age;
الكود ده بيوضح إزاي dynamic بتسهل التعامل مع البيانات اللي النوع بتاعها مش ثابت أو مش معروف وقت كتابة الكود

أكيد في طريقة أفضل إنك تعمل Model أصلا وتستقبل فيه الداتا اللي راجعه لكن ده مثال توضيحي إي مميز في dynamic عن object
بس كده أتمني يكون البوست فادك .. ومتنساش زر الشير فى أعلى البوست .. شارك مع غيرك
 

المشاركات المتشابهة

x32x01
الردود
0
المشاهدات
50
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
27
x32x01
x32x01
x32x01
الردود
0
المشاهدات
38
x32x01
x32x01
x32x01
الردود
0
المشاهدات
26
x32x01
x32x01
x32x01
الردود
0
المشاهدات
61
x32x01
x32x01
الوسوم : الوسوم
performance performance optimization

الدخول أو التسجيل السريع

نسيت كلمة مرورك؟

آخر المشاركات

أحدث المنتجات

إحصائيات المنتدى

المواضيع
1,624
المشاركات
1,812
أعضاء أكتب كود
209
أخر عضو
Norsan Alshmayl
عودة
أعلى