• Delphi 函数参数修饰中的var 、out和const


    (1)var修饰符

    添加var 是地址传递,会修改原有的变量

    var

    s: string;

    begin

    S := 'Hello';

    ChangeSVar(s);

    ShowMessage(S);

    end;

    // ChangeSVar 定义

    procedure TForm1.ChangeSVar(var A: string);

    begin

    A := A + 'World';

    end;

    以上会输出Hello World,因为是传址,修改的是原来的A

    (2)无任何修饰符

    var

    s: string;

    begin

    S := 'Hello';

    ChangeS(s);

    ShowMessage(S);

    end;

    // ChangeS定义

    procedure TForm1.ChangeS(A: string);

    begin

    A := A + 'World';

    end;

    以上会输出Hello,因为方法ChangeS其实是创建了一个新的A,而输出的还是原来的A,值并没有改变

    (3)out修饰符

    var

    s: string;

    begin

    S := 'Hello';

    ChangeSOut(s);// 此时S的值是'Hello,'而非'Hello,World'!,在过程Hello中的S的原始值被丢弃了

    ShowMessage(S);

    end;

    // ChangeSOut定义

    procedure TForm1.ChangeSOut(out A: string);

    begin

    A := A + 'World';

    end;

    以上会输出World,out仅仅接受返回的值,对out的任何输入都会被忽略。同时out传递给过程的实际参数不必进行初始化,比如对ChangeSOut的调用:

    Var

    Tmp: string;

    Begin

    ChangeSOut(Tmp);//编译也可以通过

    End;

    (4)Const修饰符

    Const修饰的参数传入之后不允许修改

    如果在过程中修改参数会报错,比如:

    Procedure xxxx.TestConst(const A: String);

    Begin

    A := ’ss’; //企图修改const修改的参数,会报错

    End;

  • 相关阅读:
    LNMP状态管理命令
    Gogs基本使用介绍
    初探Asp.net请求机制原理 1
    关于css定位
    JS不同浏览器图片载入处理
    js之队列01
    javascript 快速排序
    JavaScript prototype背后的工作原理
    关于javascrpt if快速判断说明
    js动态加载图片核心代码
  • 原文地址:https://www.cnblogs.com/echomyecho/p/2379077.html
Copyright © 2020-2023  润新知