Kann ein anonymer Typ von einem anderen Typ erben?

8

Gemäß der MSDN-Dokumentation zur StringComparer.OrdinalIgnoreCase -Eigenschaft:

  

Die OrdinalIgnoreCase-Eigenschaft gibt tatsächlich eine Instanz einer anonymen Klasse zurück, die vom StringComparer abgeleitet ist Klasse.

Ist das ein Feature, mit dem ich nicht vertraut bin - anonyme Typen mit Vererbung? Oder unter "anonymer Klasse" hat der Autor einfach "interne Klasse abgeleitet von StringComparer , nicht sichtbar für Client-Code" gemeint?

    
Dan Tao 26.11.2010, 17:09
quelle

4 Antworten

7

Wenn Sie sich den Quellcode für StringComparer ansehen, können Sie sehen, dass OrginalIgnoreCase eine Instanz von OrdinalComparer zurückgibt, die von StringComparer abgeleitet ist.

Es gibt nichts "anonymes" darüber, das ich sehen kann, es ist nur so, dass es intern ist, so dass Sie es von außerhalb des Frameworks nicht sehen können.

    
Will Dean 26.11.2010, 17:15
quelle
9

Es ist kein anonymer Typ in der normalen C # -Bedeutung des Begriffs.

Es ist nur ein Typ, der intern ist, so dass Sie den Namen nicht kennen: Sie können nicht auf den genauen Typ innerhalb Ihres Codes verweisen.

    
Jon Skeet 26.11.2010 17:13
quelle
4

Der Compiler kann anonyme Typen erstellen, die von einem anderen Typ erben - das geht nicht. Es ist schade, wirklich, wie es eine coole Funktion wäre, einen anonymen Typ im laufenden Betrieb zu erstellen, der entweder von einer anderen Klasse erbt oder eine Schnittstelle implementiert.

    
Andrew Hare 26.11.2010 17:10
quelle
3

Anonymous Typ ist anonym zu uns nicht die CLR und Compiler. Der Compiler verwendet eine lustige Benennung, die & lt; & gt; im Namen und nur Compiler kann das tun! und vielleicht Chuck Norris ...

    
Aliostad 26.11.2010 17:15
quelle