[2 [2
ienumerable 在C#展示協方差中的接口,允許將派生類型引用分配給基本類型引用。 但是,這不適用於價值類型。 分配
此限制源於拳擊和拆箱。拳擊將值類型轉換為參考類型(對象),而拆箱會反轉。
iEnumerable's type parameter 僅與參考類型一起使用。 將值類型的
分配給 iEnumerable
的必要拳擊,這不是對值類型的隱含支持。 協方差和違反依賴於轉換之間的一致價值表示。但是,價值類型不能保持這種一致性。 拳擊改變了他們的表示形式,可能導致身份喪失和不穩定,違反了協變和違反任務的原則。
埃里克·利普特(Eric Lippert)關於表示和身份的著作,強調了這些轉換需要身份。 因為Value類型的拳擊過程打破了此保存,因此它們與協方差和違反。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3