相关疑难解决方法(0)

为什么记录上不允许无参数构造函数?

以下声明:

type
  TRec = record
    constructor Create;
  end;
Run Code Online (Sandbox Code Playgroud)

产生此编译错误:

E2394记录类型不允许使用无参数构造函数

文档相当无益地说明:

没有更多信息可用于此错误或警告.

我的问题是为什么语言是这样设计的.这样做是否纯粹是为了回应C#结构的类似限制

语种导游这样说:

使用默认的无参数构造函数自动构造记录,但必须显式构造类.由于记录具有默认的无参数构造函数,因此任何用户定义的记录构造函数都必须具有一个或多个参数.

但这没有多大意义.如果记录有默认构造函数,则无法通过RTTI找到它.即使有,为什么这意味着不可能添加另一个呢?您可以为课程这样做.

也许理由是,如果允许我们定义自己的无参数构造函数,我们希望编译器自动调用它们.

注意:我知道您可以使用无参数静态类函数作为变通方法.实际上,我个人总是喜欢使用静态类函数而不是记录构造函数.但这不是问题的关键.我真正想知道的是为什么不允许在记录类型上使用无参数构造函数.

delphi

12
推荐指数
1
解决办法
741
查看次数

鸭子在德尔福2007年打字?

题:

有没有办法用Delphi 2007进行鸭子打字(即没有泛型和高级Rtti功能)?


Duck为Delphi 2010打字资源:

最后编辑:

我已经深入研究了上面列出的资源,并在这里研究了每个发布的答案.

我最终完善了我的要求,为这个问题做了一个后续帖子.

delphi duck-typing delphi-2007

11
推荐指数
2
解决办法
1435
查看次数

标签 统计

delphi ×2

delphi-2007 ×1

duck-typing ×1