How can we map keys to values in a C# program? The C# language has no built-in map type. But it offers a powerful Dictionary
type, which we use to map things.
With Dictionary
, we must specify the key type (like "string
") and the value type. With Add we map a key to a value. With TryGetValue
we safely check this mapping.
Here we map strings to other strings. Each string
can only have a mapping to one other string
(keys must be unique).
KeyValuePair
in the map in the foreach
loop.TryGetValue
is the best method to access a value in the map from a key. It returns false if the key does not exist.using System; using System.Collections.Generic; class Program { static void Main() { // Use Dictionary as a map. var map = new Dictionary<string, string>(); // ... Add some keys and values. map.Add("cat", "orange"); map.Add("dog", "brown"); // ... Loop over the map. foreach (var pair in map) { string key = pair.Key; string value = pair.Value; Console.WriteLine(key + "/" + value); } // ... Get value at a known key. string result = map["cat"]; Console.WriteLine(result); // ... Use TryGetValue to safely look up a value in the map. string mapValue; if (map.TryGetValue("dog", out mapValue)) { Console.WriteLine(mapValue); } } }cat/orange dog/brown orange brown
Select
For a map function, we want a method that applies another method to each element in a collection. The Select
method, part of LINQ, is ideal for mapping elements.
string
in a list.Select()
from the System.Linq
namespace on the array. We print each uppercase string
.pets = ["bird", "fish"] # Apply upper method to all elements with map. for result in map(lambda x: x.upper(), pets): print(result)BIRD FISHusing System; using System.Linq; class Program { static void Main() { string[] array = { "bird", "fish" }; var result = array.Select(x => x.ToUpper()); // Print result strings. foreach (string value in result) { Console.WriteLine(value); } } }BIRD FISH
Dictionary
is an important part of C# programming. It is a map collection. Usually the best way to access it is with TryGetValue
—this is safe and does not throw exceptions.
In this language, no map built-in exists. But we can access a Dictionary
, or use the Select
method from LINQ for all our mapping needs.