更新键值字典列表?

时间:2018-04-19 04:55:20

标签: c# list sorting dictionary unity3d

好的,有正常字典的答案,但我的字典/要存储的东西的大小不断变化,所以我想用一个列表。这是我存储的内容:

public List<KeyValuePair<GameObject, float>> planesFilled;

我必须不断更新这些值(如果它们产生并且在我的更新函数中不存在于列表中,则添加对。我存储对象与场景中另一个对象之间的距离。

我遇到的错误是无法仅仅为一个键拨打Contains - 我不一定知道过去的价值。我的关键应该是Gameobject。

到目前为止我所拥有的:

foreach(GameObject plane in anchorManager.planesSpawned)
        {
            if (ContainsKeyValue(planesFilled.ToDictionary(), plane)) { //dont know value
            } else {
                planesFilled.Add (new KeyValuePair<GameObject, float>(plane, GetDistanceBetweenObjs(plane.transform, botController.transform)));
            }
            //planesFilled[plane] = new KeyValuePair<GameObject, float>(plane, GetDistanceBetweenObjs(plane.transform, botController.transform));

            //list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
            planesFilled.Sort((pair1,pair2) => pair1.Value.CompareTo(pair2.Value));
        }

此func已启动,但在我的方案中并不完全正常:

public bool ContainsKeyValue<TKey, TVal>(Dictionary<TKey, TVal> dictionnaire,
        TKey expectedKey,
        TVal expectedValue) where TVal : IComparable
    {
        TVal actualValue;

        if (!dictionnaire.TryGetValue(expectedKey, out actualValue))
        {
            return false;
        }
        return actualValue.CompareTo(expectedValue) == 0;
    }

如何更新现有对象的值或将新的对象添加到列表字典情况?

1 个答案:

答案 0 :(得分:4)

  

如何更新现有对象的值或向我的新对象添加新值   列表字典情况?

我无法回答你的&#34;列表字典&#34 ;;而且我不确定是什么让你对使用实际的Dictionary犹豫不决。但如果你这样做,你可以这样做:

yourDictionary["yourKey"] = yourData;

这将是add or upate字典对。