1

我有这样的代码:

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 无效。

还有人看到这个吗?

4

3 回答 3

1

您是否myDict在标记为 的部分内进行修改// other stuff

于 2009-03-12T15:49:53.293 回答
1

查看 CodeCentral 我看到许多针对 TDictionary 的错误,特别是支持 for ... in ... 构造的枚举器。

于 2009-03-20T14:56:10.150 回答
0

尝试以一种仅使用局部变量的方法重现此问题。

可能是您使用来自 2 个不同线程的变量,或者您更新了 myDict 中的元素。

我将尝试解释我关于更多复制它的答案:

您应该创建一种可以在另一台计算机上运行并显示您遇到的错误的方法。

例如(问题:我得到了除以零异常):

var
   i : integer;
begin
   i := 3;
   while (i <= 0) do
   begin
     Writeln(FloatToStr(20/i));
     Dec(i);
   end;
end

如果您在计算机上运行此程序,人们将得到除以零的异常。所以我能够重现这个问题。尝试创建一个尽可能简单的片段,以一致的方式重现您遇到的问题。

于 2009-03-12T15:53:22.770 回答