给定以下代码:
type
Class1 = public class
end;
Class1Class = class of Class1;
Class2 = public class (Class1)
end;
Class3 = public class (Class1)
end;
Class4 = public class
public
method DoSomething(c: Class1Class): Integer;
end;
implementation
method Class4.DoSomething(c: Class1Class): Integer;
begin
if c = Class2 then
result := 0
else if c = Class3 then
result := 1
else
result := 2;
end;
实际上应该如何DoSomething
编写,因为相等比较会引发编译器错误:
Type mismatch, cannot find operator to evaluate "class of Class1" = "<type>"
使用is
编译,但实际上第一个条件始终评估为true
无论是否Class2
传入Class3
。
目标是以跨平台的方式编写此代码,而不使用特定于 Oxygene 支持的任何平台的代码。