c函式中的out的作用是什麼,C 函式中的out的作用是什麼?

2021-03-14 12:05:11 字數 2549 閱讀 7326

1樓:悠然小覺

在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 引數傳遞。

2樓:匿名使用者

out 不需要初始化

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

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

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

3樓:燁軒

1.out 不需要初始化

2.綜述:

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

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

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

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

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

4樓:匿名使用者

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

ref就是傳入引數

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

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

5樓:

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

6樓:

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

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

7樓:匿名使用者

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

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

8樓:匿名使用者

估計是這樣的

#define out

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

9樓:匿名使用者

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

C泛型的意義是什麼,C 中泛型的作用是什麼?

範型的意義在於免去了型別之間互相轉換的系統開銷,和同類方法的過載,比如,add方法你要過載兩個方法 int和double 或者更多方法,用範型只用寫一個add方法就可以完成int,double,float.等等的相加,再如,集合的操作,沒有往往是弱型別 object 而用範型可以直接是強型別,無需轉...

維生素C的作用是什麼,維生素C作用是什麼?

維生素c作用眾多,是知名度很高的維生素 明星 婦女喜愛它美白 預防色斑的作用 中老年人喜愛它抗氧化 抗衰老 預防心血管疾病的作用 青少年也喜愛它防治感冒的作用。1 合成collagen 膠原蛋白 以形成軟骨 骨質 牙釉質及血管上皮的重要基質。膠原蛋白佔人體內蛋白質總量的三分之一,形態像果凍,作用是將...

維c的功效與作用,維C的作用是什麼?

以下是維生素c的功效和作用 1.增強抵抗力。維生素c本身具有中和細胞內毒素的好處,大劑量應用維生素c能抑制細菌繁殖,只是這種補充維生素c不適合普通健康人群。所以維生素c不但能防治一般的感染性疾病,而且對中毒性休克等嚴重感染性疾病也有較好的 作用。2.防衰老。維生素c還有很好的抗氧化功效,能夠幫助促進...