gpt4 book ai didi

c# - 哈希表中的列表丢失所有条目

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:10 25 4
gpt4 key购买 nike

我目前正在尝试为 AI 实现一个感官系统,并且偶然发现了一个我自己似乎无法解决的问题。

我的系统有一个哈希表,其中包含其传感器发现的所有信息。每一帧它都像这样更新它的每个传感器,变量“信息”是哈希表:

for(int i = 0; i < sensors.Length; i++)
{
sensors[i].Update(info);
}

每个传感器向表中添加一个列表:

public void Update(Hashtable _Info)
{
List<Transform> detected = new List<Transform>();

// Run detection code

_Info.Add(key, detected);
}

正在使用的 key 在传感器类中声明。当我尝试对两个传感器使用相同的键时,问题就出现了。如果表包含这样的键,我尝试通过检查传感器的更新方法来解决这个问题:

public void Update(Hashtable _Info)
{
List<Transform> detected = new List<Transform>();
if(_Info.ContainsKey(key))
detected = (List<Transform>)_Info[key];

// Run detection code

if(!_Info.ContainsKey(key))
_Info.Add(key, detected);
else
_Info[key] = detected;
}

我以为这会解决我的问题,但事实并非如此。第一个传感器正确地将其检测到的转换列表添加到表中。我通过在每次单独的传感器更新后检查表格来确保。然而,第二个传感器无法从表中正确检索列表,并且正在使用一个空的列表,这让我丢失了第一个传感器的数据。看起来第二个传感器收到的表格确实包含正确的 key ,但列表是空的。我在调用第二个传感器的 Update 方法之前检查了表格,它仍然包含带有第一个传感器条目的列表,但似乎在 Update 方法中丢失了它。

谁能告诉我这里发生了什么,我该如何解决这个问题?我需要哈希表来保留所有条目,而不仅仅是它更新的最后一个传感器的条目。

编辑: key 始终是一个字符串,很抱歉没有提及这一点。

最佳答案

感谢 Mark Gravell,我能够查明并消除问题:

我为 Mark Gravell 编译的代码进一步解释了 http://pastie.org/9272949 中的问题表明我已经清除了每个传感器的 detected 列表。似乎也清除了第一个传感器添加到哈希表中的列表。我已将那部分更改如下:

if(_Info.ContainsKey(Key))
detected = (List<Transform>)_Info[Key];
else
detected = new List<Transform>();

这样就彻底解决了问题。感谢大家如此迅速地做出回应,感谢 Mark Gravell 为我指明了正确的方向。

干杯!

关于c# - 哈希表中的列表丢失所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com