Delphi 函數參數修飾中的var 、out和const

(1)var修飾符orm

添加var  是地址傳遞,會修改原有的變量string

var編譯

  s: string;變量

begin方法

  S := 'Hello';co

  ChangeSVar(s);參數

  ShowMessage(S);const

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;

相關文章
相關標籤/搜索