C# 字典(Dictionary)基本操作

一、定义一个字典

// 定义一个存储字符串键和整数值的字典
Dictionary<string, int> numbers = new Dictionary<string, int>();

 二、添加元素

// 添加键值对
numbers.Add("One", 1);
numbers.Add("Two", 2);

三、通过键查找值

// 获取键为"One"的值
int value;
if (numbers.TryGetValue("One", out value))
{
    Console.WriteLine($"The value for 'One' is {value}");
}

四、检查键是否存在

// 获取键为"One"的值
int value;
if (numbers.TryGetValue("One", out value))
{
    Console.WriteLine($"The value for 'One' is {value}");
}

五、获取值

// 直接通过键获取值(如果键不存在则抛出异常)
int oneValue = numbers["One"];

六、修改或更新值

// 如果键已存在,则更新其对应的值
if (numbers.ContainsKey("One"))
{
    numbers["One"] = 10; // 更新 "One" 的值为 10
}

七、删除元素

// 删除指定键的元素
if (numbers.ContainsKey("One"))
{
    numbers.Remove("One");
}

八、遍历字典

// 遍历所有键值对
foreach (var pair in numbers)
{
    Console.WriteLine($"Key: {pair.Key}, Value: {pair.Value}");
}

九、C# 8.0 及以上版本还引入了 foreach 循环简写语法

foreach (var (key, value) in numbers)
{
    Console.WriteLine($"Key: {key}, Value: {value}");
}

例子2
这个类NumberContainer02定义了一个字典 _numbers,其中键值对用于存储各种宗地信息的描述。

public NumberContainer02()
{
    // 在这里初始化字典
    _numbers = new Dictionary<string, string>
{
        //宗地信息
    { "QHDM", "子区代码" },
    { "YBDJH", "预编号" },
    { "SOUTH", "宗地编号,权利人,实际用途 " },
    { "L_ZDBM", "宗地编号" },
    { "L_QLR", "权利人" },
    { "L_SJYT", "实际用途" },
    { "PZTDYT", "批准用途" }

};
}

// 提供索引器以进行读操作(由于键是字符串,不建议提供写操作)
public string this[string key]
{
    get => _numbers.TryGetValue(key, out string value) ? value : null;
}

// 提供获取字符串的方法(可选,基于键查找值)
public string GetDescription(string number)
{
    return _numbers.TryGetValue(number, out string description) ? description : null;
}
 public string GetKeyByDescription(string description)
 {
     foreach (var pair in _numbers)
     {
         if (pair.Value == description)
             return pair.Key;
     }
     return null; // 如果没有找到匹配项,则返回 null 或者一个默认值
 }
 public List<string> GetAllKeys()//返回字典所有键值
 {
     return _numbers.Keys.ToList();
 }
public List<string> GetAllValues()//返回字典所有值
{
    return _numbers.Values.ToList();
}

 获取键值对值的方法

NumberContainer02 numberContainer02 = new NumberContainer02();
string fwjg = numberContainer02.GetDescription("QHDM");// 这将返回 "子区代码"
string key = numberContainer02.GetKeyByDescription("子区代码"); // 这将返回 "QHDM"

List<string> allKeys = numberContainer03.GetAllKeys();//返回所有key列表
List<string> allValues = numberContainer03.GetAllValues();//返回所有value列表
//返回所有key列表
foreach (string key in allKeys)
{
    Console.WriteLine(key);
}

//返回所有value列表
foreach (string value in allValues)
{
    Console.WriteLine(value);
}

同时列出 键组

public List<(string Key, string Value)> GetAllKeyValues()
{
    return _numbers.Select(pair => (pair.Key, pair.Value)).ToList();
}
NumberContainer02 numberContainer02 = new NumberContainer02();//同时列出 键组
List<(string Key, string Value)> keyValuePairs = numberContainer03.GetAllKeyValues();

foreach ((string key, string value) in keyValuePairs)
{
    Console.WriteLine($"Key: {key}, Value: {value}");
}

//感谢大家的点赞,收藏,转发,关注  

猜你喜欢

转载自blog.csdn.net/hb_ljj/article/details/136175149