الفروق بين قوالب C++ و عام C# ( ارشادات البرمجة C# )

تعتبر قوالب C++ و عام C# كلاهما مميزات اللغة التي تقدم الدعم لأنواع المعلمات. ومع ذلك، هناك العديد من الاختلافات بينهما. في مستوى بناء الجملة ,C# عام يتم اتباع نهج أبسط أنواع المعلمات دون تعقيد قوالب C++. بالإضافة إلى ذلك، C# ولا يحاول توفير كل الوظائف التي توفرها قوالب C++. في المستوى تطبيق الفرق الأساسي هو أن تنجز C# استبدالات نوع عام في وقت التشغيل وبذلك يتم حفظ معلومات النوع العام على إنشاء مثيل الكائنات.

وعلى مستوى التنفيذ، الفرق الأساسي هو أن استبدال C# نوع عام تجري في وقت التشغيل، وبذلك يتم حفظ معلومات النوع العام للكائنات التي تم إنشاء مثيل لها. لمزيد من المعلومات، راجع العام في وقت التشغيل (ارشادات برمجة C#).

فيما يلي بعض الاختلافات الرئيسية بين C# العامة وقوالب C + +:

  • لا توفر C# عام نفس القدر من المرونة كقوالب C++. على سبيل المثال، ليس من الممكن استدعاء العمليات الحسابية في C# الفئة العامة، على الرغم من أنه من الممكن استدعاء العمليات المعرفة من قبل المستخدم.

  • لا يسمح C# معلمات غير نوع القالب،, مثل template C<int i> {}.

  • لا تدعم C# التخصص الصريح; وهو تنفيذ مخصص لقالب لنوع معين.

  • لا يدعم C#التخصص الجزئي: مخصص تنفيذ ما لمجموعة فرعية من نوع الوسائط.

  • لا تسمح C# لنوع المعلمة لاستخدامها كفئة أساسية للنوع العام.

  • لا يسمح C# نوع المعلمات للأنواع الافتراضية.

  • في C#، معلمة نوع عام لا يمكن أن تكون عامة، وعلى الرغم من أن أنواع المركبة يمكن أن تستخدم كالعامة. تسمح قوالب C++ بالمعلمات:

  • يسمح C + + للرمز الذي قد لا يكون صالح لكل نوع من المعلمات في القالب ا, ثم يقوم بالتحقق من نوع معين كمعلمة النوع. C# ييتطلب رمز في فئة تكون مكتوبة بطريقة تجعله يعمل مع النوع الذي يحقق القيود. على سبيل المثال، في C++ من الممكن كتابة دالة التي تستخدم العمليات الحسابية + و - على الكائنات من نوع المعلمة وسوف ينتج خطأ في وقت إنشاء مثيل القالب بنوع لا يدعم العمليات. C# يرفض هذا؛ ويبني اللغة الوحيدة المسموح بها هي تلك التي يمكن تعلمها من القيود.

راجع أيضًا:

المرجع

مقدمة للأشياء العامة (دليل البرمجة لـ #C)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

Templates