Delphi编译器属性(特别修饰符Ref,Unsafe,Volatile,Weak)
1 Ref
delphi中常量参数就像一个本地常量,或者说只读变量。常量参数与值参数类似,除了不能在过程或函数体内给常量参数赋值,并且不能将常量参数传给另一个var类型参数。(但是,如果你常量参数传递的是一个对象引用,你还是可以修改这个对象的属性的)
使用const使得编译器能够为结构体和字符串类型的参数优化代码。而且它也提供了一种保护,防止无意中传递了一个参数引用到其他过程。
常量参数可能以值方式或引用方式传递到函数,这依赖于使用的编译器。如果要强制编译器使用引用方式传递常量参数,你可以对const关键字使用 [Ref] 修饰符。该修饰符即可以在const前面,也可以在const后面。
例如:
function FunctionName(const [Ref] parameter1: Record1Name; [Ref] const parameter2: Class2Name);
2 Unsafe
用来标记返回值Result以使编译器对它停用自动引用计数(ARC)。
[Result: Unsafe] function ReturnUnsafe: TObject;
除了System单元外,在非常罕见的情况下也可以用来修饰参数或成员变量。但是不推荐这样使用,因为它没有产生引用计数相关代码,是危险的。
3 Volatile
用来标记变量、参数、字段成员可能被另一个线程修改,所以不对它产生寄存器或临时内存位置的副本优化。
type
TMyClass = class
private
[volatile] FMyVariable: TMyType;
end;
4 Weak
声明弱引用。
type
TComponent = class(TPersistent, IInterface,
IInterfaceComponentReference)
private
[Weak] FOwner: TComponent;
---------------------
作者:tht2009
来源:CSDN
原文:https://blog.csdn.net/tht2009/article/details/50465324
版权声明:本文为博主原创文章,转载请附上博文链接!
Delphi编译器属性(特别修饰符Ref,Unsafe,Volatile,Weak)的更多相关文章
- 参数修饰符ref,out ,params的区别
参数修饰符ref,out ,params的区别 C#中有三个关键字-ref,out ,params,可是这三个之间的区别你都明白了吗? 那么我们就来认识一下参数修饰符ref,out ,params吧, ...
- c#.net中参数修饰符ref,out ,params解析
params ============================================================================================= ...
- c#参数修饰符-ref
ref 关键字通过引用传递参数. 方法定义和调用方法必须显式使用ref关键字: 调用方法时参数必须初始化: 参数中可以声明多个ref修饰的参数. 例: public void UseRef( ref ...
- 嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef
const:变量,只读[不能变] 内存属性: 1. 内存操作的大小 2.内存的变化性,可写可读 char *p; const char *p; 描述字符串,p指向的内容是只读的,不可再次修改 ...
- __weak 修饰符
在 HAL 库中,很多回调函数前面使用__weak 修饰符,这里我们有必要给大家讲解__weak 修饰符的作用. weak 顾名思义是“弱”的意思,所以如果函数名称前面加上__weak 修饰符,我们一 ...
- C#类的访问修饰符
默认情况下,类声明为内部的,即只有当前工程中的代码才能访问它.可以用internal访问修饰符关键字显式指定,但这不是必须的,类在定义时默认为此类型的类.但是C# 方法默认访问级别: private. ...
- C#类、方法的访问修饰符
这篇文章主要介绍了C#类的访问修饰符用法,较为详细的分析了C#类的访问修饰符概念与用法,具有一定的参考借鉴价值,需要的朋友可以参考下 本文详细分析了C#类的访问修饰符用法,分享给大家供大家参考.具体用 ...
- C#之out修饰符、ref修饰符、params修饰符的简单介绍
一.out修饰符 1.调用一个带有输出参数的方法也需要使用out 修饰符,但是作为输出变量传递的本地变量在将他们作为输出变量传递前不需要赋值(因为调用后会改变或丢失),编译器允 许 ...
- Python学习:17.Python面向对象(四、属性(特性),成员修饰符,类的特殊成员)
一.属性(特性) 普通方法去执行的时候,后面需要加括号,特性方法执行的时候和静态字段一样不需要不需要加括号. 特性方法不和字段同名. 特性方法不能传参数. 在我们定义数据库字段类的时候,往往需要对其中 ...
随机推荐
- tmux 入门踩坑记录
软件安装 sudo apt-get install tmux 1. 分割左右窗口 ^b -> % 运行 tmux 新建一个 tmux 的会话(session),此时窗口唯一的变化是在底部会出现一 ...
- go结构体的方法和普通函数
package main import ( "fmt" "math" ) type vertex struct { X, Y float64 } //值接收者是 ...
- brew 切换国内的源
切换到国内源 # 替换brew.git: cd "$(brew --repo)" # 中国科大: git remote set-url origin https://mirrors ...
- 修改ssh连上默认目录
vi /etc/passwd ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改 ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容 ex ...
- Flutter移动电商实战 --(19)首页_火爆专区商品接口制作
Dart中可选参数的设置 上节课在作通用方法的时候,我们的参数使用了一个必选参数,其实我们可以使用一个可选参数.Dart中的可选参数,直接使用“{}”(大括号)就可以了.可选参数在调用的时候必须使用p ...
- Mac 上卸载node和npm
Mac 上卸载node和npm 卸载node依次在终端执行下面的脚本 sudo npm uninstall npm -gsudo rm -rf /usr/local/lib/node /usr/loc ...
- 安装Oracle11g出现INS-13001环境不满足最低要求
原版:https://blog.csdn.net/Q_Sea__/article/details/79012808 第一次安装Oracle11g,就出现这个问题,就找了一些解决方案.现在总结一下. 出 ...
- 加载selenium库
一.maven的下载.解压以及环境变量配置 1.下载maven: 官网下载地址:http://maven.apache.org/download.cgi 在Files下面下载对应的maven版本(官网 ...
- 停止monkey的方法
注意 Monkey启动后会不断地向被测对象发送随机事件流,直到事件执行完毕或者发生异常时才停止.在Monkey运行过程中,即便断开 与PC的连接,Monkey依然可以在手机上继续运行. 停止Monke ...
- Java NIO学习笔记四 NIO选择器
Java NIO选择器 A Selector是一个Java NIO组件,可以检查一个或多个NIO通道,并确定哪些通道已准备就绪,例如读取或写入.这样一个线程可以管理多个通道,从而管理多个网络连接. 为 ...