«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему ковариация не работает с типами стоимости в C#?

Почему ковариация не работает с типами стоимости в C#?

Опубликовано в 2025-03-25
Просматривать:671

Why Doesn't Covariance Work with Value Types in C#?

c# Covariarics и Contravariance: Type Type Rerications

]

ienumerable интерфейс в C# демонстрирует ковариацию, позволяя назначить ссылки на полученный тип на ссылки на базовый тип. Тем не менее, это не относится к типам значений. Назначение ienumerable to это ограничение связано с боксом и распаком. Boxing преобразует тип значения в тип ссылки ( object

), в то время как распаковка переворачивает это.

type parameter t работает только с эталонными типами. Присвоение ienumerable типа значения ienumerable требует бокса, которое неявно не поддерживается для типов значений. ] ковариация и противопоставление полагаются на последовательное представление о ценности между конверсиями. Типы стоимости, однако, не поддерживают эту согласованность. Бокс изменяет свое представление, потенциально приводит к потере идентичности и нестабильности, нарушая принципы ковариатных и противоречивых заданий. ] Писания Эрика Липперта о представлении и идентичности подчеркивают, что эти конверсии требуют сохранения идентичности. Поскольку процесс бокса типов значений нарушает это сохранение, они несовместимы с ковариацией и противоположностью.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3