Delphi 2006引入了对记录的新功能,使它们更具“面向对象”的特性。
在哪种情况下,使用记录类型比类类型更适合设计?使用这些记录类型有哪些优势?
Delphi 2006引入了对记录的新功能,使它们更具“面向对象”的特性。
在哪种情况下,使用记录类型比类类型更适合设计?使用这些记录类型有哪些优势?
type
TRec = record
function Method1: Integer;
end;
function Func: TRec;
procedure Test;
var
x : TRec;
begin
Func.Method1; // Sometimes crashes the compiler
// Circumvention:
x := Func;
x.Method1; // Works
end;
如果我没记错的话,对象是在Turbo Pascal 5中引入的。然后它们为Pascal提供了一种面向对象的方法。随着Delphi的引入,它们或多或少已经被弃用,但仍然可以使用。对象可以实现接口。
类是在Delphi 1中引入的,也是最通用的。它们实现接口并支持继承。但是每个类变量都是一个隐藏指针。这意味着类需要在堆上创建。幸运的是,这个过程大部分是隐藏的。
下面是三者之间的差异表格。我加上了接口以完整。
|Class|Object|Record|Interface|
------------------|-----------------------------|
Are pointers? | y | n | n | y |
Inheritance | y | y | n | y |
Helpers | y | n | y | n |
Impl. Interface | y | y | n | - |
Visibility | y | y | n | n |
Method | y | y | y | y |
Fields | y | y | y | n |
Properties | y | y | y | y |
Consts | y | y | y | n |
Types | y | y | y | n |
Variants | n | n | y | n |
Virtual | y | n | y | - |
------------------|-----------------------------|