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