2 Stimmen

Dictionary als Parameter, wobei der Value-Type irrelevant ist

Ich habe eine Funktion, die den nächsthöheren Wert einer Dictionary-Keys-List im Vergleich zu einem gegebenen Wert zurückgibt. Wenn wir eine Schlüssel-Liste von {1, 4, 10, 24} und einen gegebenen Wert von 8 haben, würde die Funktion 10 zurückgeben.

Offensichtlich spielt der Typ des Value-Teils des Dictionarys keine Rolle für die Funktion, der Funktionscode für eine

Dictionary<int, int> 

y

Dictionary<int, myClass> 

wäre das Gleiche.

Wie muss der Methodenkopf aussehen, wenn ich die Funktion mit einem beliebigen Dictionary aufrufen will, das int als Schlüssel-Typ hat und der Wert-Typ irrelevant ist?

Ich habe es versucht:

private int GetClosedKey(Dictionary<int, object> list, int theValue);

aber es sagt, dass es illegale Argumente gibt, wenn ich es mit einem Dictionary aufrufe. Ich möchte die Funktion nicht für jeden verschiedenen Werttyp, den meine Funktion aufrufen kann, kopieren und einfügen. Haben Sie eine Idee, wie ich das bewerkstelligen kann?

Vielen Dank im Voraus, Frank

11voto

Jon Skeet Punkte 1325502

Sie können es generisch machen:

private int GetClosedKey<T>(Dictionary<int, T> list, int theValue)

In den meisten Fällen können Sie beim Aufruf der Methode die Typinferenz verwenden, um die Angabe des Typarguments für T .

Ich würde jedoch berücksichtigen. zu ändern:

private int GetClosedKey(ICollection<int> list, int theValue)

Und dann rufen Sie es mit:

int value = GetClosedKey(dictionary.Keys, desiredValue);

Das macht den Code allgemeiner - es besteht ja keine Notwendigkeit, ihn eng mit einem Wörterbuch zu verknüpfen. Abgesehen von allem anderen wird es dadurch einfacher zu testen sein.

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