在 C# 中向字典添加键值对的最佳方法

问题描述 投票:0回答:2

我在 C# 中使用字典来存储一些键值对,并对填充字典的最佳方式有疑问。

我需要执行一些其他操作才能查找键值对并将其添加到字典中。在这些操作之后,我可能找到了要添加到字典中的键值,否则我可能什么也找不到。

我的问题是我应该如何填充字典?

  • 我是否应该使用一个返回键值对(如果找到)的函数,否则返回包含在dictionary.Add(function()) 调用中的空键值对?我不想向字典添加一个空的键值对,所以我不确定该函数的返回调用将如何工作,或者

  • 我应该将字典传递给函数并在需要时添加到其中吗?喜欢:

    函数(字典) { 如果(找到对) { 字典.add(对) } }

c# dictionary key-value populate
2个回答
22
投票

不确定您在这里问什么,但这是我处理字典以基于键添加或更新值的方式:

string key = "some key here";
string value = "your value";
if (myDict.ContainsKey(key))
{
    myDict[key] = value;
}
else
{
    myDict.Add(key, value);
}

如果您愿意,可以将其包装在方法中:

void AddOrUpdate(Dictionary<string, string> dict, string key, string value)
{
    if (dict.ContainsKey(key))
    {
        dict[key] = value;
    }
    else
    {
        dict.Add(key, value);
    }
}

//usage:
AddOrUpdate(myDict, "some key here", "your value");

你也可以使用

TryGetValue
方法,但看不出有什么明显的优势。


3
投票

你的伪代码是正确的。

public void Process( bool add, Dictionary<string, string> dictionary )
{
   if( add ) dictionary.Add( "added", "value" );
}

您还可以使用扩展方法:

static class Program
{
    public static void AddIfNotNull(this Dictionary<string,object> target, string key, object value )
    {
        if( value != null )
            target.Add( key, value );
    }

    static void Main(string[] args)
    {
        var dictionary = new Dictionary<string, object>( );

        dictionary.AddIfNotNull( "not-added",    null );
        dictionary.AddIfNotNull( "added",       "true" );

        foreach( var item in dictionary )
            Console.WriteLine( item.Key );

        Console.Read( );
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.