Rob*_*edy 56 delphi parameters pass-by-reference
声明的参数与var声明的参数之间的区别是什么out?编译器如何区别对待它们(例如,通过生成不同的代码,或通过更改它发出的诊断)?或者,不同的修饰符是否只允许程序员记录参数的预期用途?做了什么样的影响类型的参数对此事?
Mas*_*ler 46
一个var参数将通过引用传递,这就是它.
一个out参数,也是按引用传递,但它假定输入值是不相关的.对于托管类型(字符串,接口等),编译器将通过在例程开始之前清除变量来强制执行此操作,相当于写入param := nil.对于非托管类型,编译器实现out相同的var.
需要注意的是有管理的参数的结算是在调用点进行,因此对于函数生成的代码不改变out或var参数.
对于编译器来说没有太大的区别.看梅森的答案.
在语义上,有一个很大的区别:
var告诉程序员该例程可以使用其当前值,out告诉程序员该例程将忽略/丢弃其当前值.| 归档时间: |
|
| 查看次数: |
17361 次 |
| 最近记录: |