📜  c# map - C# (1)

📅  最后修改于: 2023-12-03 15:13:49.313000             🧑  作者: Mango

C# Map

C# Map是一种数据结构,它将键和值一一对应。在C#中,Map通常使用Dictionary或ConcurrentDictionary实现。Map经常被用来表示可变的键值对集合,例如数据结构中的某些键的数量。

Dictionary vs ConcurrentDictionary

如果实现一个单线程的应用程序,那么可以使用Dictionary类。Dictionary类中有一个属性叫做Dictionary<TKey, TValue>.Count,它可以帮助开发者计算键值对的数量。同时,使用Dictionary类时,数据操作是线程安全的,但是可能不适用于多线程。

如果实现一个多线程的应用程序,那么可以使用ConcurrentDictionary类。ConcurrentDictionary类中也有一个属性叫做ConcurrentDictionary<TKey, TValue>.Count,它同样可以帮助开发者计算键值对的数量。同时,使用ConcurrentDictionary类时,数据操作是线程安全且性能好。

Map的三种基本操作

Map有三种基本操作:增加键值对、删除键值对、按键检索值。现在让我们看一下Map的三种基本操作的实现。

增加键值对
Dictionary<string, int> myMap = new Dictionary<string, int>();
myMap.Add("apple", 1);
myMap.Add("banana", 2);
myMap.Add("cherry", 3);

注释:上述代码创建了一个名为myMap的Dictionary实例,并向其中添加了三个键值对。每个键都是一个字符串类型(例如"apple"),而每个值都是一个整数类型(例如1)。

删除键值对
myMap.Remove("banana");

注释:上述代码从myMap中删除了键为"banana"的键值对。

按键检索值
int value;
bool containsKey = myMap.TryGetValue("cherry", out value);

if (containsKey)
{
    Console.WriteLine(value);
}

注释:上述代码按键"cherry"从myMap检索并返回了值3。如果无法找到这个键,则containsKey将变成false,不会输出任何信息。