سؤال

يقدم 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) وليس أنه يجب أن يكون من هذا النوع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top