delphi中var關鍵字

2022-02-20 15:02:40 字數 910 閱讀 6584

首先簡短說明在delphi中var的作用。

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,否則提示錯誤。

C 中的var關鍵字

var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別 就可以使用var 類似 object 但是效率比object高點。或者通俗的講 var可以理解為...

C 中的var關鍵字

c 中的var關鍵字 var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別 就可以使用var 類似 object 但是效率比object高點。或者通俗...

C 的var關鍵字

var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別就可以使用var 類似 object但是效率比object高點 使用var定義變數時有以下四個特點...