ret和out怎麼用啊

2022-12-28 03:25:18 字數 4605 閱讀 6084

1樓:匿名使用者

樓上的例子很好,但是沒有全部體現ref 和out 的區別

//測試用例

//str測試變數

protected void text(ref string str)

這樣,有試過嗎?

string str="hello world";

thsi.test(str);

執行完這兩句之後str值是什麼?是 :hello world!

再寫一個out的

//測試用例

//str測試變數

protected void text(out string str)

string str="hello world";

thsi.test(str);

很顯然,這時候str是:!

為什麼不能像ref一樣寫成 str=str+"!"呢? 看下面的解釋

首先:兩者都是按地址傳遞的,使用後都將改變原來的數值。很多人在論壇上解釋說out是按數值傳遞,是錯誤的。簡單的測試後可以知道out使用也能改變數值的,所以肯定是按照地址傳遞的。

其次:rel可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把一個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的網友說的,rel是有進有出,out是隻出不進。

經典!!!

也就是說,ref的必須是初始化(string str="hello world";)之後再呼叫方法,out的則不同,如果方法裡面沒有對out初始化(str="!";),那就會報錯,至於在方法外面是否初始化過,和方法無關!

2樓:匿名使用者

樓上寫的例子實在看不出什麼區別

要說簡單點,不用ret/out傳入方法的值就是原來值的copy,修改不會影響原來的值.用ret\out就是直接操作傳入的值.

ret 傳入的值需要先初始化

out 傳入的值在方法裡初始化

3樓:爆米花網

先定義應該是ref吧?

private void test(ref string param)

呼叫:string a = "";

test(ref a);

//a的值為hello world

outprivate void test(out string param)

呼叫:string a = "";

test(out a);

//a的值為hello world

臺式電腦主機內的l-out.l-ret.r-out.r-ret線是什麼作用?

4樓:匿名使用者

可以參考以下(5根連線線)的接法:

mic power----接麥克供電電源mic in---------接麥克風輸入line out l-------接左聲道輸出line out r ------接右聲道輸出

5樓:體育比賽暢談

兩根是音訊輸出,兩根是音訊輸入

6樓:杯具被

l-out.l-ret

為左聲道輸出、左聲道返回;

r-out.r-ret 為右聲道輸出、右聲道返回

請問一下組合語言中call和ret的用法

7樓:載建碧盼柳

call

sub執行完是繼續執行call的下一句;

主程式段中的ret是無意義的。一般主程式段會是一個死迴圈。

8樓:匿名使用者

ret是子程式返回,與call指令一一對應的,返回時程式跳到call的下一條指令。

9樓:匿名使用者

call 和ret都是跳轉指令,ret是返回棧中的資訊,就是下一條要執行的指令

c#函式中的out的作用是什麼? 20

10樓:悠然小覺

在c# 中,既可以通過值也可以通過引用傳遞引數。通過引用傳遞引數允許函式成員更改引數的值,並保持該更改。若要通過引用傳遞引數, 可使用ref或out關鍵字。

ref和out這兩個關鍵字都能夠提供相似的功效,其作用也很像c中的指標變數。它們的區別是:

1、使用ref型引數時,傳入的引數必須先被初始化。對out而言,必須在方法中對其完成初始化。

2、使用ref和out時,在方法的引數和執行方法時,都要加ref或out關鍵字。以滿足匹配。

3、out適合用在需要retrun多個返回值的地方,而ref則用在需要被呼叫的方法修改呼叫者的引用的時候。

注:在c#中,方法的引數傳遞有四種型別:傳值(by value),傳址(by reference),輸出引數(by output),陣列引數(by array)。

傳值引數無需額外的修飾符,傳址引數需要修飾符ref,輸出引數需要修飾符out,陣列引數需要修飾符params。傳值引數在方法呼叫過程中如果改變了引數的值,那麼傳入方法的引數在方法呼叫完成以後並不因此而改變,而是保留原來傳入時的值。傳址引數恰恰相反,如果方法呼叫過程改變了引數的值,那麼傳入方法的引數在呼叫完成以後也隨之改變。

實際上從名稱上我們可以清楚地看出兩者的含義--傳值引數傳遞的是呼叫引數的一份拷貝,而傳址引數傳遞的是呼叫引數的記憶體地址,該引數在方法內外指向的是同一個儲存位置。

方法引數上的 ref 方法引數關鍵字使方法引用傳遞到方法的同一個變數。當控制傳遞**用方法時,在方法中對引數所做的任何更改都將反映在該變數中。

若要使用 ref 引數,必須將引數作為 ref 引數顯式傳遞到方法。ref 引數的值被傳遞到 ref 引數。

傳遞到 ref 引數的引數必須最先初始化。將此方法與 out 引數相比,後者的引數在傳遞到 out 引數之前不必顯式初始化。

屬性不是變數,不能作為 ref 引數傳遞。

如果兩種方法的宣告僅在它們對 ref 的使用方面不同,則將出現過載。但是,無法定義僅在 ref 和 out 方面不同的過載。

out方法引數上的 out 方法引數關鍵字使方法引用傳遞到方法的同一個變數。當控制傳遞**用方法時,在方法中對引數所做的任何更改都將反映在該變數中。

當希望方法返回多個值時,宣告 out 方法非常有用。使用 out 引數的方法仍然可以返回一個值。一個方法可以有一個以上的 out 引數。

若要使用 out 引數,必須將引數作為 out 引數顯式傳遞到方法。out 引數的值不會傳遞到 out 引數。

不必初始化作為 out 引數傳遞的變數。然而,必須在方法返回之前為 out 引數賦值。

屬性不是變數,不能作為 out 引數傳遞。

11樓:匿名使用者

out 不需要初始化

ref需要初化,我看到的書上就是這麼寫的

就是說你呼叫那個函式時,對應於out修飾的引數,不需要初始化,面ref需要如下例子:

void example(out int x); //宣告void dddd(ref int y); //宣告int main()

12樓:燁軒

1.out 不需要初始化

2.綜述:

c#的變數宣告 和使用 必須是 例如:int a =5; 這樣a才可以被使用

如果是:int b ; b除非被賦值,否則使用他的地方有一個編譯時的錯誤。

out 相對於ref ,out修飾的引數,可以像b一樣,不用被賦值,而直接代到方法的引數中去,但在方法中,帶有out修飾符的,必須首先被賦值。

ref,要想a一樣,必須 先被賦值才能代到方法的引數中去,要不然,有一個編譯時的錯誤。

out同ref一樣,都是有一級地址傳遞的,也就是,帶有這兩個修飾符的引數,如果被修改了原來的值,將以新的值作為它的值.

13樓:匿名使用者

out是傳出引數,裡面可以執行一個方法,out後面的數接收並返回比如說你寫一個方法返回list,可以在裡面寫一個查詢總條數的方法,用out返回,然後在最後還可以返回一個list

ref就是傳入引數

比如說你傳入pagesize,和pageindex引數,在方法上定義了一個ref int total,你就可以在裡面寫 total=pagesize+pageindex;

這個total就是你傳入的變數值

14樓:

他們都是用來方法返回值的 一個方法只能return一個內容如果需要兩個或以上就需要用到ref和out了 ref在使用前需要初始化而out則不用

15樓:

ref 一般側重於修改,out一般側重於輸出。

在傳參時,如果用的是ref則引數在使用前不一定要賦值,而out則一定要,否則無法對這個引數進行運算

16樓:匿名使用者

rel 相當於把這個變數變成全域性變數。

out 規定在函式中一定要給變數重新賦值

17樓:匿名使用者

估計是這樣的

#define out

也就是沒有任何意義,只是為了輔助記憶。

18樓:匿名使用者

去飯客看看,也許能解決你這個問題

gnd mic in mic power l out l ret r out r ret 怎麼插

海藻怎麼用啊 我急,海藻怎麼用啊 我急

加水比例 1勺海藻 加4勺水記住加微溫水 約45 60度 夏天可用冷水或根據自己愛好加一些牛奶,蜂蜜,蘆薈汁,純露之類的,等待膠原發酵一會兒後再使用,效果更佳!2 撕成小片,然後一片一片的貼在臉上就可以了,貼好 後加一張 紙在臉上,海藻就不會掉下來了 3 約20 25鍾後,看看幹得差不多,就可以往下...

how what where怎麼用啊

一 how 1 how作 怎樣,怎麼樣 解時,主要是指做某事或某事發生的方式或方法,還可以引導從句或動詞不定式,在句中作賓語,引導的從句在句中還可作定語。2 how表示某種方式時,可放在表示方式的名詞後面。3 how作 情況如何 解時,指詢問某人的近況或身體狀況如何。4 how作 多麼,多少 解時,...

遮瑕膏怎麼用啊

不可以直接使用。比較傷 也不會有好的效果。使用步驟 1 遮瑕膏能輕鬆的將臉部各種瑕疵遮蓋修飾,對於有黑眼圈和痘印等暗沉膚色都能遮蓋完美,但用的時候一定是在粉底之後和散粉之前使用。2 對於區域性有瑕疵的部位,可使用較少的用量點塗於此處,然後輕輕按壓塗抹暈開,修飾出更加自然的均勻膚色。3 顏色的選擇,對...