2010-11-26 13 views
8

Nach der MSDN-Dokumentation auf der StringComparer.OrdinalIgnoreCase Eigenschaft:Kann ein anonymer Typ von einem anderen Typ erben?

Die OrdinalIgnoreCase Eigenschaft gibt tatsächlich eine Instanz einer anonymen Klasse aus der Klasse StringComparer abgeleitet.

Ist das ein Feature, das ich nicht kenne-anonyme Typen mit Vererbung? Oder mit "anonymer Klasse" meinte der Autor einfach "interne Klasse abgeleitet von StringComparer, nicht sichtbar für Client-Code"?

+0

mögliche Duplikate von [Kann eine anonyme Klasse C# eine Schnittstelle implementieren?] (Http://stackoverflow.com/questions/191013/can-ac-sharp-anonymous-class-implement-an-interface) – nawfal

Antwort

7

Wenn Sie sich den Quellcode sucht StringComparer, 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, dass es intern ist, so dass Sie es von außerhalb des Rahmens nicht sehen können.

+0

Danke, dass du das gemacht hast, wozu ich zu faul gewesen bin - ich betrachte die tatsächliche Quelle;) –

4

Der Compiler kann anonyme Typen erstellen, die von einem anderen Typ erben - Sie können 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.

+4

Ja, Erstellen Ein anonymer Typ, der eine Schnittstelle implementiert, wäre ziemlich sauber. – BFree

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.

+0

Danke; Das ist im Grunde, was ich mich gefragt habe. Ich gab dieses +1, aber akzeptierte Wills Antwort, da er sich tatsächlich die Mühe machte, den Quellcode zu betrachten (in Reflector nehme ich an). –

+0

Der Quellcode kann von MS heruntergeladen werden (obwohl ihr Referenz-Quellprojekt eine beschämende Sache ist) - ich habe es auch von Windows indiziert, also ist es sehr schnell, diese Art von Sachen zu sehen. http://referencesource.microsoft.com/netframework.aspx –

3

Anonyme Art ist anonymous zu uns nicht die CLR und Complier. Compiler verwendet eine lustige Benennung, die <> im Namen enthält und nur der Compiler kann das tun! und vielleicht Chuck Norris ...

+4

Chuck Norris kennt den Namen des anonymen Typs. –

+3

Chuck Norris kann mehrfache Vererbung auf einem anonymen Typ schießen ... – Aliostad

+1

Richtig, aber ich war unsicher, ob * diese * ist, was die Dokumentation sogar mit "anonymous" meint (der vom Compiler generierte Typ, z. B. von anonymen Typen von C#)). Es ergibt sich aus Wills Antwort nur eine ganz andere Bedeutung. –

Verwandte Themen