So I've wurde stochern rund um mit C # ein bisschen in letzter Zeit, und alle Generic Collections haben mich ein wenig verwirrt. Angenommen, ich wollte eine Datenstruktur darstellen, wo der Kopf eines Baumes war ein Schlüssel-Wert-Paar, und dann gibt es eine optionale Liste von Schlüssel-Wert-Paare darunter (aber nicht mehr Ebenen als diese). Wäre dies geeignet?
public class TokenTree
{
public TokenTree()
{
/* I must admit to not fully understanding this,
* I got it from msdn. As far as I can tell, IDictionary is an
* interface, and Dictionary is the default implementation of
* that interface, right?
*/
SubPairs = new Dictionary<string, string>();
}
public string Key;
public string Value;
public IDictionary<string, string> SubPairs;
}
Es ist wirklich nur ein einfacher Nebenschluss für die Weitergabe von Daten.
Es gibt einen aktuellen Datentyp namens KeyValuePair, der wie folgt verwendet wird
KeyValuePair<string, string> myKeyValuePair = new KeyValuePair<string,string>("defaultkey", "defaultvalue");
Es gibt einen eingebauten Typ KeyValuePair<S,T>. Auf diesen Typ haben Sie über das IDictionary Zugriff, wenn Sie darin iterieren.
Außerdem ist diese Struktur kaum ein Baum; einen repräsentativeren Namen zu finden, könnte eine gute Übung sein.
Dictionary Class ist genau das, was Sie wollen, korrekt.
Sie können das Feld direkt als Dictionary<string, string> deklarieren, anstelle von IDictionary, aber das bleibt Ihnen überlassen.