Y
ymail
Unregistered / Unconfirmed
GUEST, unregistred user!
在我读SysUtils源码时,发现FreeAndNil实现如下:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
为什么不能简化成:
procedure FreeAndNil(var Obj);
begin
TObject(Obj).Free;
Pointer(Obj) := nil;
end;
我想来想去,就只有Free和Nil的顺序两者不同,前者是先置空。
大家怎么看?
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
为什么不能简化成:
procedure FreeAndNil(var Obj);
begin
TObject(Obj).Free;
Pointer(Obj) := nil;
end;
我想来想去,就只有Free和Nil的顺序两者不同,前者是先置空。
大家怎么看?