• 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;

  • 相关阅读:
    IDEA中用好Lombok,撸码效率至少提升5倍
    在 IDEA 中使用 Debug,真是太厉害了!
    彻底理解cookie,session,token
    优秀的程序员一定要多写博客!
    IntelliJ IDEA 从入门到上瘾教程,2019图文版!
    注解配置
    过滤器(登录认证)
    过滤器
    Session监听器
    request监听器
  • 原文地址:https://www.cnblogs.com/echomyecho/p/2379077.html
Copyright © 2020-2023  润新知