Laden...

Dictionary<K, V> und die Erweiterungsklasse "Enumerable"

Erstellt von darefilz vor 15 Jahren Letzter Beitrag vor 15 Jahren 706 Views
D
darefilz Themenstarter:in
123 Beiträge seit 2004
vor 15 Jahren
Dictionary<K, V> und die Erweiterungsklasse "Enumerable"

Einen wunderschönen Abend zusammen.

Also, mir ist vorhin etwas aufgefallen, das ich leider nicht verstehe:
Die Klasse Dictionary<K, V> ist scheinbar nicht von den diversen Erweiterungsmethoden der Enumerable-Klasse betroffen. Aber warum nicht?!
Nach meinem Verständnis sollten diese Methoden doch alle Klassen erweitern, die im ersten Argument hinter dem this stehen; in diesem Fall alle Klassen, die IEnumerable<T> implementieren. Dictionary<K, V> implementiert IEnumerable<T> auch (genau wie z.B. List<T>, bei der die Erweiterungsmethoden greifen), aber trotzdem wird es nicht erweitert.

Kann mir da jemand weiter helfen, irgendwie scheine ich da was zu übersehen...

Vielen Dank und liebe Grüße, _void

Gelöschter Account
vor 15 Jahren

Nach meinem Verständnis sollten diese Methoden doch alle Klassen erweitern, die im ersten Argument hinter dem this stehen;

welchem argument??

Dictionary<K, V> implementiert IEnumerable<T> auch (genau wie z.B. List<T>, bei der die Erweiterungsmethoden greifen), aber trotzdem wird es nicht erweitert.

die interfacemember sind explizit implementiert. das bedeutet, das du die dictionary klasse explizit gegen das interface casten musst um an die methoden händisch zu kommen.

D
darefilz Themenstarter:in
123 Beiträge seit 2004
vor 15 Jahren

Hallo JAck30lena.

welchem argument??

Mit dem ersten Argument meinte ich

public static void F(this string str) { }

das "this string str". War vielleicht etwas unglücklich ausgedrückt.

die interfacemember sind explizit implementiert. das bedeutet, das du die dictionary klasse explizit gegen das interface casten musst um an die methoden händisch zu kommen.

Das ist klar, aber um die Methoden des Interfaces geht es mir nicht, sondern um die Erweiterungsmethoden für dieses Interface.

Aber wie auch immer, das Ganze hat sich insofern geklärt, dass das gar nicht stimmt, was ich erzählt habe. Dictionary<K, V> wird sehr wohl um die besagten Methoden erweitert, nur aus irgendeinem Grund habe ich das nicht gesehen. Vielleicht fehlte mir eine Using-Direktive oder ein Assemblyverweis oder so, keine Ahnung.
Aber trotzdem vielen Dank.
_void.