c# Covariarics и Contravariance: Type Type Rerications
] ienumerable
интерфейс в C# демонстрирует ковариацию, позволяя назначить ссылки на полученный тип на ссылки на базовый тип. Тем не менее, это не относится к типам значений. Назначение ienumerable
to
это ограничение связано с боксом и распаком. Boxing преобразует тип значения в тип ссылки (
object
type parameter t
работает только с эталонными типами. Присвоение ienumerable
типа значения ienumerable
требует бокса, которое неявно не поддерживается для типов значений. ]
ковариация и противопоставление полагаются на последовательное представление о ценности между конверсиями. Типы стоимости, однако, не поддерживают эту согласованность. Бокс изменяет свое представление, потенциально приводит к потере идентичности и нестабильности, нарушая принципы ковариатных и противоречивых заданий. ]
Писания Эрика Липперта о представлении и идентичности подчеркивают, что эти конверсии требуют сохранения идентичности. Поскольку процесс бокса типов значений нарушает это сохранение, они несовместимы с ковариацией и противоположностью.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3