C# 字典中ContainsKey和ContainsValue的区别?

C# 字典中ContainsKey和ContainsValue的区别?,c#,C#,containsKey与containsValue有何不同 public Dictionary<string, string> dictionary = new Dictionary<string, string>(); if(dictionary.ContainsValue("123")) { } if(dictionary.ContainsKey("123")) { } 公共字典=新字典(); if(dictionary.ContainsValue(“123

containsKey与containsValue有何不同

public Dictionary<string, string> dictionary = new Dictionary<string, string>();


if(dictionary.ContainsValue("123"))
{

}
if(dictionary.ContainsKey("123"))
{

}
公共字典=新字典();
if(dictionary.ContainsValue(“123”))
{
}
if(dictionary.ContainsKey(“123”))
{
}
是从
键到
值的映射

ContainsKey()
检查您的字典是否包含某个键,它的速度非常快-查找键(并查找与该键相关的数据)是字典的主要优势。您可能需要这样做,以避免访问不存在的密钥(在这种情况下请阅读),避免访问不存在的密钥数据可能是更好的选择

ContainsValue()
迭代所有值并检查它是否在字典中,这是一个缓慢而繁琐的过程,因为它需要转到所有值,直到第一个值匹配为止。不是通过键值而是通过遍历所有值来访问值,这并不是字典的作用

执行
ContainsKey()
是可以的,如果您觉得需要执行
ContainsValue()
您可能操作了错误类型的数据结构

Doku:

  • vs

  • ContainsKey
    检查
    键中是否存在给定对象(在本例中为
    string
    )。Dictionary使用
    散列
    ,因此此操作执行速度非常快(O(1)复杂度)

    ContainsValue检查给定对象(在本例中为int
    int
    )是否存在于
    Value
    s中

    public Dictionary<string, int> dictionary = new Dictionary<string, int>();
    
    dictionary.Add("123", 321);
    
    if(dictionary.ContainsValue(321)) // return true
    {
    
    }
    if(dictionary.ContainsKey("123")) //return true
    {
    
    }
    
    公共字典=新字典();
    词典.添加(“123”,321);
    if(dictionary.ContainsValue(321))//返回true
    {
    }
    if(dictionary.ContainsKey(“123”)//返回true
    {
    }
    
    Well
    ContainsKey
    检查字典中是否有具有指定键的条目,然而,
    ContainsValue
    检查字典中是否有具有指定值的条目。名称是否足够明显?@ChetanRanpariya我只是想知道它们之间的区别。我现在还没有完全理解ContainsValue,我知道了,谢谢。哦,好的,谢谢。