我有这样的代码:
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.Items [k];'上抛出的异常说k无效。
其他人见过这个吗?
答案 0 :(得分:1)
您是否在标有myDict
的部分内修改了// other stuff
?
答案 1 :(得分:1)
查看CodeCentral我看到针对TDictionary的一些错误,特别是支持for ... in ...构造的枚举器。
答案 2 :(得分:0)
尝试在仅使用局部变量的单个方法中重现此问题。
可能是你使用了来自2个不同线程的变量,或者你可能更新了myDict中的元素。
我会尝试解释有关复制它的答案:
你应该创建一个可以在另一台计算机上运行的方法,并显示你得到的错误。
所以例如(问题:我得到除零除外):
var
i : integer;
begin
i := 3;
while (i <= 0) do
begin
Writeln(FloatToStr(20/i));
Dec(i);
end;
end
如果您在计算机上运行此操作,则人们将获得除以零的异常。所以我能够重现这个问题。尝试创建尽可能简单的代码段,以便以一致的方式重现您遇到的问题。