sv中增加了一種方式ref,指定為引用而不是複製。
將temp[$]
傳進來,經過task get
操作後,外面的temp[$]
佇列資料也會減少,如果沒有ref
,那麼僅僅是複製乙個temp[$]
傳進去,外面的temp[$]
不會受到影響。
注意:ref
指示的變數應該是區域性變數,也就是automatic
型別。如果資料變數被宣告為automatic
,那麼在進入該程序/方法後,automatic
變數會被建立,而在離開該程序/方法後,automatic
變數會被銷毀,而static
變數在**開始時即會被建立,而在程序/方法執行過程中,自身不會被銷毀,而可以被多個程序和方法所共享,是全域性的。
task
裡面對temp[$]
進行操作時,是不允許外面也對temp[$]
進行操作,所用只能是區域性變數才符合ref
使用規則。
...
.temp[$]
//外面..
..task get
(string name, ref int q[$]);
int val;
forever begin
wait
(q.size()
>0)
; val=q.
pop_front()
;//裡面
endendtask
ref 關鍵字out關鍵字
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace outandref ref修飾方法的引數,在呼叫的時候必須...
ref關鍵字 out關鍵字 區別
ref 和 out 關鍵字比較怪,他們在方法的引數中使用,今天對他們做了認真的研究 msdn上的定義 ref關鍵字使引數按引用傳遞。其效果是,當控制權傳遞 用方法時,在方法中對引數所做的任何更改都將反映在該變數中。若要使用ref引數,則方法定義和呼叫方法都必須顯式使用ref關鍵字。out關鍵字會導致...
C out和ref關鍵字
out和ref關鍵字會導致引數通過引用來傳遞。不同之處在於ref 要求變數必須在傳遞之前進行初始化。若要使out和 ref 引數,方法定義和呼叫方法都必須顯式使out及ref關鍵字。例如 class example static void refmethod refint j static void...