當前位置:編程學習大全網 - 編程語言 - c#編程中關鍵字"ref"在什麽時候使用?是在定義函數之後沒有設定返回值的時候使用嗎?它的作用

c#編程中關鍵字"ref"在什麽時候使用?是在定義函數之後沒有設定返回值的時候使用嗎?它的作用

還是以例子來說明吧;

1. ref:

int i =0;

有函數fun(ref i)和fun(i)

它們的函數體都是{ i = 3;},那麽在執行以下兩段代碼後:

(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());

(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());

(1)的輸出是1,(2)的輸出是3,

2. out:

int i; //註意,這裏只是聲明了變量i,並沒有對其初始化

有函數fun(ref i)、fun(out i)和fun(i)

它們的函數體都是{ i = 3;},那麽在執行以下三段代碼後:

(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());

(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());

(3)int i = 0; fun(out i); System.Console.WriteLine(i.ToString());

(1)和(2)在編譯的時候都會報錯:錯誤 CS0165: 使用了未賦值的局部變量“i”

而(3)能正常編譯,而且輸出3

對於妳的問題,的確,ref和out跟C/C++中的指針很類似,但是ref和out還是有區別的,主要就是在於ref應用的場合是已經有了壹個變量了,想在另外壹個函數裏頭對其進行修改,這時只能用ref,out的話適用於函數想返回多個值的時候,比如壹個函數做某個運算,結果是壹個int,但是無論函數運行成功或失敗,它都會返回壹個int,但我們在調用的時候還想知道函數的執行是否成功了,這個時候就可以用壹個這樣的函數:int i; bool fun(out i); 通過fun函數返回的bool值可以知道函數執行是否成功,然後通過out的i我們可以知道函數運算得出的結果,因此壹般情況out主要用於壹個函數返回多個返回值的時候。

最後總結壹下:

Ref和Out這兩個關鍵字都能夠提供相似的功效,其作用也很像C中的指針變量。稍有不同之處是:

使用Ref型參數時,傳入的參數必須先被初始化。而Out則不需要,對Out而言,就必須在方法中對其完成初始化。

使用Ref和Out時都必須註意,在方法的參數和執行方法時,都要加Ref或Out關鍵字。以滿足匹配。

Out更適合用在需要Return多個返回值的地方,而Ref則用在需要被調用的方法修改調用者的引用的時候。

  • 上一篇:《再見狂野之心》:以電子遊戲為載體的流行樂專輯
  • 下一篇:如何安裝type3(4.2.0.0)?
  • copyright 2024編程學習大全網