在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
var关键字在delphi 中是再普通不过的一个关键字, 大家都知道它的作用就是说明其后定义的是变量,局部变量不能在定义是赋初值, 全局变量可以设初值。 技术手册中如是 描述: 全局变量会被初始化, 如integer型会被初始化为0 , 字符串为空,对象为nil。 但是局部变量不会被初始化。 而我在这里说的不是这些。 因为我碰到了一个问题。 是这样的,在一个类中有一个属性, 象这样: Ta = class private fp1 : integer; public property p1: integer read Fp1 write Fp2; end; 如果如此有个方法,procedure SetSomeOne(var tmp : integer); 这样使用这个方法; var a: Ta; begin a := Ta. create; 假设 ta在create时 fp1已经赋值了。 那么调用: SetSomeOne(a.p1); 则提示错误。 Constant object cannot be passed as var parameter 我的英语很差, 应该翻译如下:常量对象不能作为变参传递 如果去掉 SetSomeOne参数中的var 则编译通过。 经过我的研究和测试最终找到了答案, 在方法参数中var很重要,一个方法如果没有返回值即procedure,那么它传递参数的可能只有方法参数, 那么必须设置要传递的参数为var。 否则永远得不到想要的结果。 对象的属性(property)不能作为变参(var)。 必须定义一个中间变量来传递给property,否则提示错误。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论