English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dictionary<TKey, TValue> es una colección genérica que almacena pares clave-valor en un orden no específico.
Dictionary<TKey, TValue> almacena pares clave-valor.
Pertenece al espacio de nombres System.Collection.Generic.
Implementar la interfaz IDictionary<TKey, TValue>.
La clave debe ser única y no puede ser nula.
Los valores pueden ser nulos o repetidos.
Se puede acceder a los valores pasando una clave relevante al indexador, por ejemplo myDictionary[key]
Los elementos se almacenan como objetos KeyValuePair<TKey, TValue>.
Se puede crear un diccionario pasando un objeto Dictionary<TKey, TValue> para definir los tipos de clave y valor que puede almacenar. El siguiente ejemplo muestra cómo crear un diccionario y agregar pares clave-valor.
IDictionary<int, string> numberNames = new Dictionary<int, string>(); numberNames.Add(1, \ //Agregar claves utilizando el método Add()/Valor numberNames.Add(2, \ numberNames.Add(3, \ //La siguiente línea provoca una excepción en tiempo de ejecución: clave ya agregada. //numberNames.Add(3, \ foreach(KeyValuePair<int, string> kvp in numberNames) Console.WriteLine("Key: {0}, Value: {1} kvp.Key, kvp.Value); //Usar colección-Sintaxis de inicializador para crear diccionarios var cities = new Dictionary<string, string>(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} ; foreach(var kvp in cities) Console.WriteLine("Key: {0}, Value: {1} kvp.Key, kvp.Value);
En el ejemplo anterior, numberNames es un diccionario de tipo Dictionary<int, string>, por lo que puede almacenar claves de tipo int y valores de tipo string. Del mismo modo, cities es un diccionario de tipo Dictionary<string, string>, por lo que puede almacenar claves y valores de tipo string. Los diccionarios no pueden contener claves repetidas o nulas, mientras que los valores pueden ser repetidos o nulos. La clave debe ser única, de lo contrario se generará una excepción en tiempo de ejecución.
Se puede acceder a los diccionarios utilizando indexadores. Especificar una clave para obtener el valor asociado. También se puede obtener un KeyValuePair desde el índice especificado utilizando el método ElementAt().
var cities = new Dictionary<string, string>(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} ; Console.WriteLine(cities["UK"]); //打印 UK 键值 Console.WriteLine(cities["USA"]);//打印 USA 键值 //Console.WriteLine(cities["France"]); // 运行时异常:run-time exception: Key does not exist //使用ContainsKey()检查未知键 if(cities.ContainsKey("France")){ Console.WriteLine(cities["France"]); } //使用TryGetValue()获取未知键的值 string result; if(cities.TryGetValue("France", out result)) { Console.WriteLine(result); } //使用ElementAt()通过索引检索键值对 for (int i = 0; i < cities.Count; i++) { Console.WriteLine("Key: {0}, Value: {1} }
通过在索引器中指定键来更新键的值。如果字典中不存在键,它将抛出KeyNotFoundException,因此在访问未知键之前使用ContainsKey()方法
var cities = new Dictionary<string, string>(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} ; cities["UK"] = "Liverpool, Bristol"; //更新 UK 键的值 cities["USA"] = "Los Angeles, Boston"; //更新 USA 键的值 //cities["France"] = "Paris"; //Lanza una excepción de tiempo de ejecución: KeyNotFoundException if(cities.ContainsKey("France")){ cities["France"] = "Paris"; }
Remove()方法从字典中删除现有的键值对。Clear()方法删除字典中的所有元素。
var cities = new Dictionary<string, string>(){ {"UK", "London, Manchester, Birmingham"}, {"USA", "Chicago, New York, Washington"}, {"India", "Mumbai, New Delhi, Pune"} ; cities.Remove("UK"); // Eliminar 'UK' //Eliminar 'UK' //Lanza una excepción de tiempo de ejecución: KeyNotFoundException if(cities.ContainsKey("France")){ // Antes de extraer la clave, revise Eliminar 'UK' } cities.Clear(); //Eliminar todos los elementos
La siguiente imagen ilustra la estructura jerárquica de la clase Dictionary genérica.
Puede obtener más información sobre métodos y propiedades de diccionario en docs.microsoft.com.