本地变量,一般是随着函数执行结束,就不能再访问;

而如果在匿名函数,访问了外部函数的本地变量,本地变量的生命周期会被扩展

unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;typeTIntSum = reference to procedure (x, y: Integer);TForm1 = class(TForm)btn1: TButton;procedure FormCreate(Sender: TObject);procedure btn1Click(Sender: TObject);privateFIntSum: TIntSum;procedure plusXandY(x, y: Integer);{ Private declarations }publicproperty IntSum: TIntSum read FIntSum write FIntSum;{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
begin//点击button1,lResult变成130,第二次变成160,。。。plusXandY(10, 20);
end;procedure TForm1.FormCreate(Sender: TObject);
varlResult: Integer;
begin//初始化lResultlResult := 100;//将方法制定给属性,但不调用IntSum := procedure (x, y: Integer)beginlResult := lResult + x + y;ShowMessageFmt('x + y = %d', [lResult]);end;end;procedure TForm1.plusXandY(x, y: Integer);
beginintSum(x, y);end;end.

转载于:https://www.cnblogs.com/iihe602/archive/2013/02/21/2920887.html

Delphi匿名方法(三):扩展本地变量的生命周期相关推荐

  1. JVM详解之:汇编角度理解本地变量的生命周期

    文章目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一 ...

  2. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  3. Android静态变量的生命周期

    Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...

  4. Python学习手册之内部方法、操作符重载和对象生命周期

    在上一篇文章中,我们介绍了 Python 的类和继承,现在我们介绍 Python 的内部方法.操作符重载和对象生命周期. 查看上一篇文章请点击:https://www.cnblogs.com/dust ...

  5. C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)

    文章目录 1 异常的基本概念 1.1 C语言中的异常处理 1.2 C++中的异常处理 1.3 异常严格类型匹配 2 栈解旋(unwinding) 3 异常的接口声明[C++11已废弃] 4 异常变量的 ...

  6. C/C++构造及析构顺序及变量的生命周期

    (1)变量的构造及析构顺序 1)在全局范围内定义的对象(即在所有函数之外定义的对象),它的构造函数在文件中的所有函数(包括main函数)执行之前调用.如果一个程序中有多个文件,而不同文件之间都定义了全 ...

  7. c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)

    异常接口声明 为了加强程序的可读性,可以在函数声明中列出可能抛出异常的所有类型,例如:void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常 如果 ...

  8. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)

    一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率.  匿名类的声明语法:  var o ...

  9. 便携式激励vs形式化vsUVM验证方法在IP块的整个生命周期中的比较分析

    摘要-验证技术和方法不断发展,以应对日益严峻的验证挑战.当今行业的最新技术是基于UVM和基于形式化(Formal)的验证流程.事实证明,这两种技术都可以显著提高验证质量,但缺点是测试用例或激励不能&q ...

最新文章

  1. 还没用上 JDK 11吧,JDK 12 早期访问构建版使用
  2. 使用 Python 进行稳定可靠的文件操作
  3. python面向对象基础
  4. 微软发布3款SQL Injection攻击检测工具
  5. 现实问题从数学化到离散化再到程序化
  6. HTML网页设计作业
  7. Excel高级应用教程:数据处理与数据分析
  8. Nginx反向代理RabbitMQ出现交换机和队列出现Not found The object you clicked on was not found; it may have been。。。
  9. 八类网线和七类网线的区别_超6类和7类网线的区别
  10. 嗜血法医第一二三季/Dexter全集迅雷下载
  11. 对《骨骼运动变换的数学计算过程详解》一文的理解
  12. 火爆全网的 “蚂蚁牙黑” 特效 今天你也可以做。
  13. 不联网安装 SQL server 2012 的问题
  14. 高手是怎样炼成的:精妙SQL语句介绍
  15. 高性价比WIFI图传方案快速入门教程
  16. openvino只支持英特尔6代以上的cpu
  17. 人生若只如初见 何事秋风悲画扇
  18. 《出路》电影版看到父母倾尽所有供寒门学子找出路还是那么的艰难
  19. 软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想
  20. 计算机插u盘抖动,u盘插入电脑闪蓝屏怎么办? 爱问知识人

热门文章

  1. Python Django 常用字段类型
  2. 【视频】v-bind的使用
  3. Oracle不带传出参数的存储过程创建及调用
  4. win10电脑亮度无法调节
  5. linux服务器静态ip,Ubuntu Linux系统下设置静态IP的方法
  6. 微信支付分-支付失败原因总结
  7. 第一行代码学习笔记第六章——详解持久化技术
  8. Spring入门图解(体系结构-IOC-DI-AOP)
  9. 会话管理:Session与Cookie
  10. python有几种打开方式_Python中几个以“__”开头的方法介绍总结