Warum geben Wörterbücher nicht einfach null
zurück, wenn ein ungültiger Schlüssel zum Indizieren in die Sammlung verwendet wird?ungültiger Schlüssel im Wörterbuch
13
A
Antwort
25
Da allgemeine Wörterbücher Instanzen eines Werttyps enthalten könnte, und null ist nicht gültig für einen Werttyp verwendet wird. Zum Beispiel:
var dict = new Dictionary<string, DateTime>();
DateTime date = dict["foo"]; // What should happen here? date cannot be null!
Sie sollten stattdessen die TryGetValue Methode Wörterbuch verwenden:
var dict = new Dictionary<string, DateTime>();
DateTime date;
if (dict.TryGetValue("foo", out date)) {
// Key was present; date is set to the value in the dictionary.
} else {
// Key was not present; date is set to its default value.
}
Auch ein Wörterbuch, das Referenztypen speichert noch Nullwerte speichern. Und in Ihrem Code könnte "Wert ist null" anders sein als "Schlüssel ist nicht vorhanden".
3
Microsoft entschied, dass =)
Machen Sie einen Inline-Check, um das zu vermeiden.
object myvalue = dict.ContainsKey(mykey) ? dict[mykey] : null;
5
3
Praktischer Grund: Weil ein Dictionary einen Nullwert speichern könnte. Sie könnten diesen Fall in Ihrem Szenario nicht mit einer Ausnahme unterscheiden.
2
Verwandte Themen
- 1. Mehrwertsuche im Wörterbuch Schlüssel
- 2. Objektzeigerwert als Schlüssel im Wörterbuch
- 3. Get max Schlüssel im Wörterbuch
- 4. Unbekannter Schlüssel im PDF-Objekt-Wörterbuch
- 5. Python: Schlüssel des Index im Wörterbuch erhalten
- 6. Warum produziert Julia #undef Schlüssel im Wörterbuch?
- 7. JSCH - Ungültiger privater Schlüssel
- 8. SharpSSH ungültiger privater Schlüssel
- 9. Gebäude Wörterbuch im Wörterbuch
- 10. ungültiger Schlüssel Hash - Android facebook
- 11. filtern Schlüssel aus Wörterbuch
- 12. Counting booleans im Wörterbuch
- 13. Python Wörterbuch Schlüssel als Zahlensatz
- 14. wpf combobox schlüssel/wert wörterbuch
- 15. mehrere Werte für einen Schlüssel im Python-Wörterbuch anhängen
- 16. kann nicht in Python Schlüssel im Wörterbuch übereinstimmen
- 17. Python: Zuweisen von Benutzereingaben als Schlüssel im Wörterbuch
- 18. Alle Schlüssel zusammen mit Wert im verschachtelten Wörterbuch zurückgeben
- 19. Der Versuch, Werte Schlüssel im Wörterbuch zuweisen gibt Typ Fehler
- 20. Swap Schlüssel und Werte im Wörterbuch mit Strich
- 21. Verwenden von .iteritems(), um über Schlüssel, Wert im Python-Wörterbuch
- 22. Add-AzureAccount: Der angegebene Schlüssel nicht im Wörterbuch vorhanden war
- 23. ein Schlüssel im Wörterbuch Fehler nicht vorhanden war
- 24. Schleife spezifische Schlüssel im Wörterbuch, um Werte zu erhalten
- 25. übergeben Wert von Bindung als Schlüssel im Wörterbuch
- 26. Python - Finden längsten (die meisten Wörter) Schlüssel im Wörterbuch
- 27. Python überprüfen, dass der Schlüssel im Wörterbuch definiert ist
- 28. Mehrere Werte für Schlüssel im Wörterbuch in Python
- 29. Erhalten Sie alle Schlüssel im Wörterbuch enthalten Wert x
- 30. Suche nach versteckten Schlüssel-Wert-Paaren im Wörterbuch
Dies bezieht dich nicht wirklich den Grund für die Design-Entscheidung; sie hätten es einfach schaffen können, 'default (DateTime)' anstelle von null zurückzugeben. – Extragorey
@Extragorey Ja, insbesondere der letzte Satz: Was auch immer der Wert "nicht gefunden" ist, müssen Sie diesen Wert möglicherweise als sinnvoll speichern. Wenn das Abrufen eines Schlüssels, der nicht gefunden wird, "default (DateTime)" zurückgibt, können Sie nicht zwischen "value is' default (DateTime) "und" key is not present "unterscheiden, zumindest ohne einen zusätzlichen Aufruf von' ContainsKey() '(was die Kosten der Operation unnötig verdoppeln würde). Für ein Wörterbuch, das einen Referenztyp als Wert enthält, ist "null" möglicherweise ein bedeutungsvoller Zustand, abgesehen von "Schlüssel ist nicht vorhanden". – cdhowie
Danke, diese Erklärung macht mehr Sinn. – Extragorey