C# C# Covariance and Contravariance: قيود نوع القيمة
الواجهة ienumerable
في C# تعرض التباين ، مما يسمح بتعيين مراجع النوع المشتق إلى مراجع النوع الأساسي. ومع ذلك ، هذا لا ينطبق على أنواع القيمة. تخصيص ienumerable
إلى ienumerable
ينتج خطأ التجميع.
ينبع هذا القيد من الملاكمة والملاكمة. يقوم الملاكمة بتحويل نوع القيمة إلى نوع مرجع ( كائن
) ، بينما يعكس unboxing هذا. ienumerable
معلمة النوع t
تعمل فقط مع أنواع المراجع. تعيين ienumerable
من نوع القيمة إلى ienumerable
يستلزم الملاكمة ، والتي لا يتم دعمها ضمنيًا لأنواع القيمة.
تعتمد التباين والتخريب على تمثيل قيمة ثابت عبر التحويلات. أنواع القيمة ، ومع ذلك ، لا تحافظ على هذا الاتساق. يغير الملاكمة تمثيلهم ، مما قد يؤدي إلى فقدان الهوية وعدم الاستقرار ، وانتهاك مبادئ المهام المتغيرة والمخالفة.
كتابات إريك ليبرت حول التمثيل والهوية تبرز أن هذه التحويلات تتطلب الحفاظ على الهوية. نظرًا لأن عملية الملاكمة "أنواع القيمة" تكسر هذا الحفظ ، فهي غير متوافقة مع التباين والانتهاك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3