簡體   English   中英

從ValueType繼承引用類型

[英]Inheriting Reference Type from ValueType

我們知道在框架中,許多valuetypes viz Int32,Double等都繼承自引用類型,即Abstract類(System.ValueType和intern System.Object類)。 現在我想知道我是否可以通過C#代碼明確地模擬類似的概念。 是的,我完全知道C#編譯器規則會阻止它完成。 我不知道VB.NET是否也會阻塞?

下面的代碼示例只是清楚地演示了。

    //Error code : Can not be done
    public abstract class MyClass
    {

    }

    public struct MyStruct : MyClass
    {
    }

所以我雖然生病了嘗試通過ilasm.exe做同樣的事情,但它給出了奇怪的錯誤,我無法解決許多谷歌搜索。 無論我對你提出什么問題,在框架內都可以做這種繼承,但在外面卻無法完成。

因此,有什么方法可以模擬這種情況嗎?

PS:不,我在解決現實問題方面沒有任何成就。 只會滿足我的想法和學習。

謝謝和快樂編碼,

Zenwalker :)

見ECMA 335(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf)

第I.8.9.10節(值類型繼承):

在未裝箱的表單中,值類型不會從任何類型繼承。 盒裝值類型應直接從System.ValueType繼承,除非它們是枚舉,在這種情況下,它們應從System.Enum繼承。 盒裝價值類型應密封。

邏輯上,盒裝類型對應於值類型

是對象類型。

將指定哪個對象類型是其基類型(即,它繼承的對象類型)。

將具有未定義字段的基本類型。

將密封以避免處理價值切片的並發症。

此處指定的限制性規則允許更有效的實施,而不會嚴重損害功能。

因此,非枚舉值類型只能從System.ValueType繼承,這是普通類型系統的限制,而不是C#語言的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM