2 Stimmen

KeyedCollection ist eine Sammlung von was?

Ich möchte eine Methode erstellen, die durch eine verschlüsselte Auflistung iterieren würde. Ich möchte sicherstellen, dass meine Methode die Iteration einer beliebigen Sammlung unterstützt, die die KeyedCollection<string, Collection<string>>

Hier ist die Methode:

public void IterateCollection(KeyedCollection<string, Collection<string>> items)
{
    foreach (??? item in items)
    {
        Console.WriteLine("Key: " + item.Key);
        Console.WriteLine("Value: " + item.Value);
    }
}

Es funktioniert natürlich nicht, weil ich nicht weiß, welcher Typ die Fragezeichen in der Schleife ersetzen soll. Ich kann nicht einfach object ou var denn ich muss die Key y Value Eigenschaften zu einem späteren Zeitpunkt im Schleifenkörper. Nach welchem Typ suche ich? Danke!

8voto

Jon Skeet Punkte 1325502

KeyedCollection<TKey, TItem> implementiert ICollection<TItem> In diesem Fall würden Sie also verwenden:

foreach(Collection<string> item in items)

Das ist es, was var auch Ihnen geben würde. Sie wissen nicht erhalten. Schlüssel/Wert-Paare in KeyedCollection - erhalten Sie einfach die Werte.

Ist es möglich, dass KeyedCollection wirklich nicht der am besten geeignete Typ für Sie ist?

2voto

mellamokb Punkte 55046

Der Artikeltyp wird sein Collection<String> durch die Definition des Zählers von KeyedCollection . Sie können sich nicht willkürlich für einen geeigneten Typ entscheiden, so dass Sie beides bekommen Key y Value wenn die Iteration dies nicht unterstützt, was in diesem Fall nicht der Fall ist. Beachten Sie, dass die Verwendung des expliziten Typs und var sind exakt identisch.

Wenn Sie beides wollen Key y Value in der Iteration verfügbar ist, müssen Sie die Dictionary<string, Collection<string>> Typ.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X