System.Collections.Generic.Dictionary`Add`vs set'Item`

Pac*_*ier 18 .net c# vb.net generics dictionary

如果我想把物品放入System.Collections.Generic.Dictionary,我可以Add或者设置Item.

我知道如果我们这样做Add检查密钥是否已经存在,如果不存在则抛出异常.

因此,当添加大量项目时,我是否应该更喜欢设置Item而不是Add,因为Add不必要的检查可能实际上减慢了速度?

Ale*_*Aza 35

以下是设置Item时发生的情况:

public void set_Item(TKey key, TValue value)
{
    this.Insert(key, value, false);
}
Run Code Online (Sandbox Code Playgroud)

以下是添加项目时发生的情况:

public void Add(TKey key, TValue value)
{
    this.Insert(key, value, true);
}
Run Code Online (Sandbox Code Playgroud)

最后一个参数last bool add参数只影响这一行:

if (add)
{
    ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_AddingDuplicate);
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您在添加重复项时需要例外,则需要使用"添加".如果要覆盖现有项目,则需要设置项目.