Autor Beitrag
kernst-web
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 15.01.21 13:22 
Hallo,

ich habe folgenden Code Abschnitt:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
Dictionary<string, Modul> modulList = modulInfo.getModulList();

foreach (Dictionary<string, Modul> modul in modulList)
{

}

Ich hätte jetzt erwartet das man über das Dictionary mit foreach iterieren kann!
Bekomme aber immer folgenden Fehler:
Zitat:
Der Typ "System.Collections.Generic.KeyValuePair<string, WindowsFormsApp1.Tools.ValueObjects.Modul>" kann nicht in "System.Collections.Generic.Dictionary<string, WindowsFormsApp1.Tools.ValueObjects.Modul>" konvertiert werden.

Was mache ich da falsch?
Geht das gar nicht?
Bzw. wie macht man es richtig?

Danke für eure Hilfe!
Grüße
Klaus


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Fr 15.01.2021 um 14:06
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Quote-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4364
Erhaltene Danke: 939

Win10
C#, C++ (VS 2015/17/19)
BeitragVerfasst: Fr 15.01.21 14:16 
Hallo und :welcome:

der Datentyp bei einer foreach-Schleife entspricht einem Eintrag des zu iterierenden Containers.
Bei einem Dictionary<K, V> also ein KeyValuePair<K, V> (wie auch in der Fehlermeldung angegeben):
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (KeyValuePair<string, Modul> keyValuePair in modulList) // oder alternativ var verwenden
{
  // Zugriff dann per keyValuePair.Key sowie keyValuePair.Value
}

Wenn du jedoch nur die Keys oder nur die Values benötigst, dann kannst du auch über modulList.Keys bzw. modulList.Values iterieren.
kernst-web Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 15.01.21 14:22 
Danke für die Hilfe!

Manchmal sieht man den Wald vor lauter Bäumen nicht.
In meinem Fall reicht es über die Keys zu iterieren und nachträglich das Object aus dem Dictionary zu nehmen.

Herzlichen Dank
Klaus

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4364
Erhaltene Danke: 939

Win10
C#, C++ (VS 2015/17/19)
BeitragVerfasst: Fr 15.01.21 14:40 
Das ist dann aber ineffizienter als die KeyValuePair<K, V>-Lösung (da ja dann jedesmal nach einem Value im Dictionary gesucht wird - auch wenn diese approximiert O(1) beträgt).