微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 为什么要使用类而不是记录,反之亦然?

我一直在使用Delphi一段时间,但不是来自CS背景,我已经学到了“在工作中” – 大多来自我的老板,并通过从网页上拾取的比特来增加用户指南,例子等等

现在我的老板是老派,开始使用Pascal进行编程,并不一定保持最新的Delphi的最新变化。

最近我一直在想,我们的核心技术之一是否“错了”。

我们的大部分应用程序与MysqL接口。一般来说,我们将创建一个记录,其结构用于存储从DB读取的数据,这些记录将存储在TList中。通常我们将有一个单位定义我们在应用程序中的各种记录,以及种子和读取记录的功能和过程。我们不使用如here概述的记录程序

在回顾了一些例子后,我开始想知道我们是否会更好地使用课程而不是记录,但是我无法以任何一种方式找到强有力的指导。

我们正在处理的事情将是用户信息:名称dob,事件,事件类型。或时间表信息:小时,工作等…

解决方法

最大的区别是记录是值类型,类是引用类型。简而言之,这就是:

>对于值类型,当您使用赋值时,a:= b,将进行复制。有两个不同的实例,a和b。
>对于引用类型,当您使用赋值时,a:= b,两个变量都指向同一个实例。只有一个实例。

这样做的主要后果是当您写入a.Field:= 42时会发生什么。对于记录,值类型,赋值a.Field会更改a中的成员的值,但不更改b中的成员的值。这是因为a和b是不同的实例。但是对于一个类,由于a和b都引用相同的实例,所以在执行a.Field:= 42后,你可以安全地声明b.Field = 42。

没有硬而快的规则说,你应该始终使用值类型,或者总是使用引用类型。两者都有自己的位置。在某些情况下,优选使用一种,在其他情况下,优选使用另一种。本质上,决策总是归结于对您所要求的任务运算符的意义。

你有一个现有的代码库,大概是熟悉它的程序员,做出了特别的选择。除非你有一个令人信服的理由转向使用参考类型,否则这种变化几乎肯定会导致缺陷。在现有代码(切换到引用类型更改赋值运算符的含义)以及在将来写入的代码中,缺陷(您和您的同事已经在特定上下文中对赋值运算符的意义开发了直觉,直觉会断开如果你切换)。

此外,您声明您的类型不使用方法。仅由数据组成的类型,并且没有与之相关联的方法很可能最好由值类型表示。我不能肯定地说,但我的本能告诉我,原来的开发商做出了正确的选择。

原文地址:https://www.jb51.cc/delphi/103369.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐