加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 10:09:21 所属栏目:大数据 来源:网络整理
导读:Delphi 2006引入了新的记录功能,使其更加“面向对象”. 在哪种情况下,比类型更适合于设计的记录类型? 使用这些记录类型有哪些优势? 解决方法 你有记录,对象和类. 自从turbo pascal 1以来,它们是可用的.它们是轻量级的,具有属性和方法,但不支持继承.返回记
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   |    -    |
------------------|-----------------------------|

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读