ما الفرق بين مفاهيم c++0x وقيود c#؟
-
20-08-2019 - |
سؤال
يقدم C++0x المفاهيم, ، والتي تتيح لك تحديد نوع من النوع بشكل أساسي. ويحدد الخصائص المطلوبة من نوع ما.
تتيح لك C# التحديد قيود عام مع "أين" بند.
فهل هناك فرق دلالي بينهما؟
شكرًا لك.
المحلول
هناك شيء واحد يجب أخذه في الاعتبار وهو أن قوالب C++ وأدوية C# ليست متماثلة تمامًا.انظر الى هذا إجابة لمزيد من التفاصيل حول تلك الاختلافات.
من الصفحة التي قمت بربطها لشرح مفاهيم C++0x، يبدو أن الفكرة هي أنك في C++ تريد أن تكون قادرًا على تحديد أن نوع القالب ينفذ خصائص معينة.في C#، يذهب القيد إلى أبعد من ذلك ويفرض على النوع العام أن يكون "من" هذا القيد.على سبيل المثال، كود C# التالي:
public GenericList<T> where T : IDisposable
يقول أن أي نوع يستخدم بدلاً من T يجب تنفيذ واجهة IDisposable.وكذلك الكود التالي:
public abstract class ABC {}
public class XYZ : ABC {}
public GenericList<T> where T : ABC
يقول أن أي نوع يستخدم بدلا من T يجب أن يكون من النوع ABC أو مشتق من ABC.
تنص فكرة مفهوم C++0x فقط على أن النوع المستخدم بدلاً من T يجب أن يكون له نفس الخصائص المحددة بواسطة ABC (أو IDisposable) وليس أنه يجب أن يكون من هذا النوع.