Wie kann ein Werttyp einen Schnittstellentyp implementieren?

8

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.

    
Lincoln Bergeson 25.01.2014, 00:13
quelle

3 Antworten

11

Werttyp ( struct ) kann Schnittstelle implementieren. Er kann kein weiteres struct erben, kann aber eine Schnittstelle implementieren.

  

struct (C # -Referenz)

     

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:

%Vor%

valueAsInterface enthält Verweis auf einen umrahmten Wert eines Werttyps, der diesen Schnittstellentyp implementiert .

    
MarcinJuraszek 25.01.2014, 00:15
quelle
5

Es gibt nichts, was sagt, dass ein Werttyp keine Schnittstelle implementieren kann.

Der folgende Code ist vollkommen legal:

%Vor%     
Kenneth 25.01.2014 00:16
quelle
1

Hier ist ein Beispiel:

%Vor%     
Arunkumar Ravikumar 25.01.2014 08:37
quelle

Tags und Links