首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂记录和私有默认属性

复杂记录和私有默认属性
EN

Stack Overflow用户
提问于 2014-07-20 23:10:10
回答 2查看 1.9K关注 0票数 0

我有以下记录:

代码语言:javascript
复制
type
  TMongoIdArray = array[0..11] of Byte;

  TMongoId = record
  strict private
    FMongoIdArray: TMongoIdArray;

    function GetMongoIdByte(Index: Integer): Byte;
    procedure SetMongoIdByte(Index: Integer; const Value: Byte);
    function GetMemory: pointer;

    property MongoIdArray[Index: Integer]: Byte read GetMongoIdByte
        write SetMongoIdByte; default;
  public
    class operator Implicit(const AMongoId: TMongoIdArray): TMongoId;
    class operator Implicit(const APointer: pointer): TMongoId;
    class operator Implicit(const AVariant: Variant): TMongoId;
    class operator Implicit(const AString: String): TMongoId;
    class operator Equal(const AMongoId1, AMongoId2: TMongoId): Boolean;
    class operator NotEqual(const AMongoId1, AMongoId2: TMongoId): Boolean;

    function ToDateTime: TDateTime;
    function ToVariant: Variant;
    function ToString: String;
    function IsEmpty: Boolean;
    procedure Clear;

    property Memory: pointer read GetMemory;
  end;

我不希望用户在试图访问这个单元MongoIdArray之外的记录方法/属性时看到属性,并通过将默认属性放在strict private部分来解决这个问题。这是常见的(也是推荐的)做法吗?

从注释更新

我想问的是,将默认属性设置为私有/严格私有,以避免代码中的任何地方(不仅仅是本地单元)访问它,这是一种常见的做法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-21 09:05:38

我想问的是,将默认属性设置为私有/严格私有,以避免代码中的任何地方(不仅仅是本地单元)访问它,这是一种常见的做法。

可见度说明符 (privatestrict private是可见性说明符)是控制程序其余部分可以看到哪些符号的唯一方法。所以,这并不是说这是一种普遍的做法,而是没有其他方法可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2014-07-21 01:28:05

privatestrict private之间唯一的区别是,private成员对同一单元中的所有对象和方法都是可见的,而strict private成员仅在类或记录本身中可见。

如果您唯一关心的是将底层字段隐藏在类之外的使用者面前,那么简单的private就足够了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24855793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档