In der C # -Sprachspezifikation v5.0 in Abschnitt 1.3 heißt es:
Ein Schnittstellentyp kann als Inhalt eine Nullreferenz haben, eine Referenz auf eine Instanz eines Klassentyps, der diesen Schnittstellentyp implementiert, oder a Verweis auf einen Boxed-Wert eines Werttyps, der das implementiert Schnittstellentyp
Ich habe kein Problem mit zwei von drei dieser Aussagen. Der letzte verwirrt mich jedoch. Wie kann ein Schnittstellentyp einen Boxed-Wert eines Werttyps enthalten, der diesen Schnittstellentyp implementiert? Ich dachte, Werttypen könnten keine Schnittstellentypen implementieren? Oder heißt es, dass der Boxed-Wert den Interface-Typ implementiert? Wenn dies der Fall ist, wie kann ein Boxed-Wert einen Schnittstellentyp implementieren?
Ich habe Schwierigkeiten, all das zu verstehen.
Werttyp ( struct
) kann Schnittstelle implementieren. Er kann kein weiteres struct
erben, kann aber eine Schnittstelle implementieren.
Structs können eine Schnittstelle implementieren, aber sie können nicht von einer anderen Struktur erben. Aus diesem Grund können Strukturelemente nicht als geschützt deklariert werden.
Wenn Sie also ein struct
haben, das IInterface
implementiert, und Sie tun folgendes:
valueAsInterface
enthält Verweis auf einen umrahmten Wert eines Werttyps, der diesen Schnittstellentyp implementiert .
Tags und Links c# interface value-type boxing