为什么使用类型为键的TDictionary的声明会抛出内部L2095错误?

问题描述:

有谁知道为什么下面的代码会抛出一个内部的L2095错误?为什么使用类型为键的TDictionary的声明会抛出内部L2095错误?

显然,编译器有一个问题,字典的键是一个类的类型。

任何人都知道解决方法吗?

(PS:当我不包括TestDict := TDictTest.Create;部分或没有引发错误的时候,关键是不是类型别的东西)

TTestClass = class 
    end; 

    TTypeOfTestClass = type of TTestClass; 

    TDictTest = TDictionary<TTypeOfTestClass,Integer>; 

var 
    TestDict: TDictTest; 

implementation 

initialization 

    TestDict := TDictTest.Create; 
    TestDict.Free 

新增答案后:

显然这是关于我本能地使用“type of”而不是“class of”。 “Type of”被编译器接受,因此造成混乱。 对此问题的引用:What "type of" declaration represents in Delphi and how can it be used

我不认为“......的类型”甚至是允许的。使用

TTypeOfTestClass = class of TTestClass; 

代替。

+0

我确实应该使用“class of”!我在我的代码的其他部分,但由于某种原因,我这次使用“类型”,它确实很奇怪地编译。除了TDictionary声明外,它似乎在任何地方都被接受。奇。但是,谢谢! – Domus