パラドックスを理解する:
C# では、構造体 (値の型) はクラスから継承できますが、これはその固有の値コピー動作と矛盾しているように見えます。 この記事では、値型のセマンティクスを損なうことなく、この継承がどのように機能するかを明確にします。
C# では、構造体がクラスから継承できるようにし、すべての構造体が最終的に System.ValueType
から派生し、それ自体が System.Object
から継承することを義務付けます。 この継承により、基本クラスのメンバーへのアクセスが許可されます。
共通言語ランタイム (CLR) は、メモリ管理に基づいて値型と参照型を区別します。 値型は値によってコピーされ、参照型は参照によってコピーされます。この基本的な違いは、継承に関係なく残ります。
参照型からの継承は、値型の核となる特性である値のコピーには影響しません。 値型のインスタンスは、継承階層に関係なく、常に値によってコピーされます。
赤いボックス (値の型) と青いボックス (参照型) を想像してください。 Object
、ValueType
、Enum
という 3 つの特別な青いボックスが存在します。すべての赤いボックスは ValueType
または Enum
内にあります。 青いボックス内に含まれていても、赤いボックスの色は変わりません。同様に、継承によって値の型のコピー動作は変更されません。
以上がC# の値の型は、値のコピー動作を維持しながらオブジェクト (参照型) からどのように継承できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。