我的代码是这样的:
type
TMyDictionary = TDictionary<int, int>;
var
myDict: TMyDictionary;
k, v: integer;
// code to fill the dictionary
for k in myDict.Keys do
begin
v := myDict.Items[k];
// other stuff
end;我随机地看到'v := myDict.Itemsk;‘抛出了一个异常,说明k是无效的。
还有人看过这个吗?
发布于 2009-03-20 14:56:10
查看CodeCentral,我发现了许多针对TDictionary的错误,特别是支持for的枚举器。在...构造。
发布于 2009-03-12 15:49:53
您是否正在修改标记为// other stuff的部分中的myDict
发布于 2009-03-12 15:53:23
尝试在一个仅包含局部变量的方法中重现此问题。
可能是您从两个不同的线程中使用了变量,也可能是您正在更新myDict中的元素。
我将尝试解释更多关于重现它的答案:
你应该创建一个可以在另一台计算机上运行的方法,并显示你得到的错误。
所以举个例子(问题:我得到一个被零除的异常):
var
i : integer;
begin
i := 3;
while (i <= 0) do
begin
Writeln(FloatToStr(20/i));
Dec(i);
end;
end如果你在一台计算机上运行它,人们会得到除以零的异常。所以我能够重现这个问题。尝试创建一个尽可能简单的代码片段,以一致的方式重现您所遇到的问题。
https://stackoverflow.com/questions/639232
复制相似问题