我有以下代码操作与记录在Delphi
type
TEnumTest = (
Hello1 = 0,
Hello2 = 1,
Hello3 = 2,
Hello4 = 3,
Hello5 = 4
);
type
TRecordTest1 = record
testa : Integer;
testb : AnsiString;
testc : Boolean;
testd : LongWord;
end;
type
TRecordTest2 = record
testa : Integer;
testb : AnsiString;
testc : Boolean;
testd : TEnumTest;
end;
type
TRecordTest3 = record
testa : Integer;
testb : AnsiString;
testc : Boolean;
testd : TEnumTest;
end;
type
TRecordTest4 = record
testa : Integer;
testb : AnsiString;
testc : Boolean;
testd : TEnumTest;
end;
type
TtestRecord = record
test1 : TRecordTest1;
test2 : TRecordTest2;
test3 : TRecordTest3;
test4 : TRecordTest4;
end;
有没有办法通过使用反射或其他机制,所以我可以做这样的操作:
var
a : TtestRecord;
b : TtestRecord;
if a = b then
begin
..............
..............
end;
clearAllValues(a);
我刚刚添加的逻辑表达式
这是不必要的复杂。直接调用'Default'即可。你的通用方法很麻烦。我怀疑你相信'Default'是一个通用函数。事实并非如此。 –
@DavidHeffernan:我只是想''Default()'不能用于泛型之外,而不是泛型。就像你说的那样,它并没有被Embarcadero记录下来,每一篇我可以发现提到'Default()'的博客文章总是与泛型相关,从不独立。我从来没有使用过它。 –
它是那些内部函数之一,有点像新的'GetTypeKind',它传递了一个类型引用。这可以是泛型类型或方法内的通用参数,也可以是具体类型。如果他们记录它真的会很好。这是一个血腥的有用功能。 –