c#協方差和違反:值類型限制
>> C#中的接口展示協方差,允許將派生類型引用分配給基本類型引用。 但是,這不適用於價值類型。 將IEnumerable<T>
分配給IEnumerable<int>
>導致彙編錯誤。 IEnumerable<object>
>
),而拆箱會反轉。 object
>的類型參數IEnumerable<T>
僅與參考類型一起使用。 將值類型分配給T
>協方差和違反依賴於轉換之間的一致價值表示。但是,價值類型不能保持這種一致性。 拳擊改變了他們的代表性,可能導致身份喪失和不穩定,違反了協變和違反任務的原則。 IEnumerable
IEnumerable<object>
埃里克·利珀特(Eric Lippert)關於代表和身份的著作強調了這些轉換需要保存。 由於價值類型的拳擊過程打破了此保存,因此它們與協方差和違反。
以上是為什麼協方差不使用C#中的價值類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!