Delphi匿名方法(三):扩展本地变量的生命周期
本地变量,一般是随着函数执行结束,就不能再访问;
而如果在匿名函数,访问了外部函数的本地变量,本地变量的生命周期会被扩展
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匿名方法(三):扩展本地变量的生命周期相关推荐
- JVM详解之:汇编角度理解本地变量的生命周期
文章目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一 ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- Android静态变量的生命周期
Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...
- Python学习手册之内部方法、操作符重载和对象生命周期
在上一篇文章中,我们介绍了 Python 的类和继承,现在我们介绍 Python 的内部方法.操作符重载和对象生命周期. 查看上一篇文章请点击:https://www.cnblogs.com/dust ...
- C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)
文章目录 1 异常的基本概念 1.1 C语言中的异常处理 1.2 C++中的异常处理 1.3 异常严格类型匹配 2 栈解旋(unwinding) 3 异常的接口声明[C++11已废弃] 4 异常变量的 ...
- C/C++构造及析构顺序及变量的生命周期
(1)变量的构造及析构顺序 1)在全局范围内定义的对象(即在所有函数之外定义的对象),它的构造函数在文件中的所有函数(包括main函数)执行之前调用.如果一个程序中有多个文件,而不同文件之间都定义了全 ...
- c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)
异常接口声明 为了加强程序的可读性,可以在函数声明中列出可能抛出异常的所有类型,例如:void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常 如果 ...
- 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率. 匿名类的声明语法: var o ...
- 便携式激励vs形式化vsUVM验证方法在IP块的整个生命周期中的比较分析
摘要-验证技术和方法不断发展,以应对日益严峻的验证挑战.当今行业的最新技术是基于UVM和基于形式化(Formal)的验证流程.事实证明,这两种技术都可以显著提高验证质量,但缺点是测试用例或激励不能&q ...
最新文章
- 还没用上 JDK 11吧,JDK 12 早期访问构建版使用
- 使用 Python 进行稳定可靠的文件操作
- python面向对象基础
- 微软发布3款SQL Injection攻击检测工具
- 现实问题从数学化到离散化再到程序化
- HTML网页设计作业
- Excel高级应用教程:数据处理与数据分析
- Nginx反向代理RabbitMQ出现交换机和队列出现Not found The object you clicked on was not found; it may have been。。。
- 八类网线和七类网线的区别_超6类和7类网线的区别
- 嗜血法医第一二三季/Dexter全集迅雷下载
- 对《骨骼运动变换的数学计算过程详解》一文的理解
- 火爆全网的 “蚂蚁牙黑” 特效 今天你也可以做。
- 不联网安装 SQL server 2012 的问题
- 高手是怎样炼成的:精妙SQL语句介绍
- 高性价比WIFI图传方案快速入门教程
- openvino只支持英特尔6代以上的cpu
- 人生若只如初见 何事秋风悲画扇
- 《出路》电影版看到父母倾尽所有供寒门学子找出路还是那么的艰难
- 软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想
- 计算机插u盘抖动,u盘插入电脑闪蓝屏怎么办? 爱问知识人