هي الميزة الجديدة من C # 4.0 - "المعلمات الاختيارية" CLS-متوافقة؟

StackOverflow https://stackoverflow.com/questions/5456989

سؤال

هذه الميزة الجديدة مريحة حقا.

مؤخرا قرأت وثيقة "إطار التعليمات البرمجية Microsoft All-in-One"، وتذكر أن "المعلمات الاختيارية" ليست متوافقة CLS.

لذلك قمت باختبارها باستخدام "المعلمات الاختيارية" في API العام، وتحولت إلى FXCOP، ثم تم تجميعها و FXCOP لم يشكو من أي شيء.في المتوسط، في حين أن FXCOP قام بالإبلاغ عن تحذير عندما أضيف واجهة برمجة تطبيقات لها uint كنوع عودتها.

حتى الآن أنا مرتبك، هو "المعلمات الاختيارية" متوافقة مع CLS أم لا؟

وما هي أفضل طريقة لمعرفة ما إذا كانت ميزة لغة جديدة متوافقة مع CLS أم لا؟

هل كانت مفيدة؟

المحلول

الحجج الاختيارية هي "نوع" CLS متوافق. الأساليب ذات الوسائط الاختيارية قانونية ويمكن تجميعها بنجاح مع سمة GransoSodicetagCode، ولكن المتصلين من هذه الطرق لا تحتاج بالضرورة إلى مراعاة قيم المعلمات الافتراضية أو السمة الاختيارية. (في هذه الحالة سوف تتصرف هذه الأساليب بنفس الطريقة تماما مثل الأساليب القياسية، تتطلب أن يتم ذكر جميع الوسائط بشكل صريح في موقع المكالمة.)

الأساليب التي تستخدم المعلمات الافتراضية يسمح تحت اللغة المشتركة المواصفات (CLS)؛ ومع ذلك، cls يسمح للمجمعات التحويل البرمجيات بتجاهل القيم التي يتم تعيينها لهذه المعلمات. رمز مكتوب للمجمعات التي تجاهل قيم المعلمة الافتراضية يجب أن توفر صراحة الحجج ل كل المعلمة الافتراضية. للحفاظ على السلوك الذي تريده عبر لغات البرمجة، طرق ذلك استخدام المعلمات الافتراضية يجب أن تكون استبداله مع طريقة الزائدة توفير المعلمات الافتراضية.

(مأخوذة من الوثائق الخاصة ب "CA1026: يجب عدم استخدام المعلمات الافتراضية" . )

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