什么时候应该在Delphi中使用增强型记录类型而不是类?

前端之家收集整理的这篇文章主要介绍了什么时候应该在Delphi中使用增强型记录类型而不是类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Delphi 2006引入了新的记录功能,使其更加“面向对象”.

在哪种情况下,比类型更适合于设计的记录类型?
使用这些记录类型有哪些优势?

解决方法

你有记录,对象和类.

自从turbo pascal 1以来,它们是可用的.它们是轻量级的,具有属性方法,但不支持继承.返回记录的函数有一些问题.如果这些记录有方法有时会产生内部错误

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;

如果我是正确的话,对象将被引入涡轮帕斯卡5.然后他们为帕斯卡的OO提供了一种方式.他们或多或少被推荐使用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   |    -    |
------------------|-----------------------------|

猜你在找的Delphi相关文章