(delphi11最新学习资料) Object Pascal 学习笔记---第12章第4节 ( 类型别名助手)

12.4.5 类型别名助手

​ 正如我们所见,不能为相同类型定义两个助手,更不用说原生数据类型了。那么如何向原生数据类型(例如 Integer)添加额外的直接操作呢?虽然没有明确的解决方案,但有一些可能的解决方法(除了复制内部类助手源代码并添加额外的方法)。 我喜欢的解决方案是定义一个类型别名。类型别名被编译器视为全新的类型,因此它可以有自己的助手而不替换原始类型的助手。现在,鉴于这两种类型是独立的,你仍然不能将两个类助手的方法应用于同一变量,但可以将其中一组进行类型转换。我将用代码来解释这一点。假设你创建了一个类型别名,如下所示:

type
  MyInt = type Integer;

现在,你可以为这种类型定义一个助手:

type
  TMyIntHelper = record helper for MyInt
    function AsString: string;
  end;
  
function TMyIntHelper.AsString: string;
begin
  Result := IntToStr(Self);
end;

​ 如果你声明这种新类型的变量,访问该变量将默认允许你调用新类型的助手,但你仍然可以通过转换访问 Integer 类型的助手—这段代码在 TypeAliasHelper 示例中,你可以进一步尝试改写为其他形式:

procedure TForm1.Button1Click(Sender: TObject);
var
  MI: MyInt;
begin
  MI := 10;
  Show(MI.AsString);
  // Show(MI.ToString); // 这不起作用
  Show(Integer(MI).ToString);
end;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值