sv中ref 關鍵字

2021-10-11 11:06:20 字數 886 閱讀 9363

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...