1樓:洪冷松
使用引用傳遞
例如:public void huan(int a,int b)
//下面是main程式
c#中ref是什麼意思?怎麼運用的?求列子
2樓:匿名使用者
可以理解為類似的傳址引用,同時還有out。
在函式需要外部傳入乙個變數名,然後在程式內部可以將這個值進行修改,典型的傳址引用!在定義時必要加ref或out說明!
public void methoda(out string s )
呼叫時,應該先宣告乙個字元變數。
string temp;
methoda(out temp);
此時可以列印temp的值會變作"1";
而ref與out基本是類同的,如果在程式中引用原值的話,必須使用ref防止傳入未初始化的值。
public void methodb(ref int s)
因為該函式要使用形參的原值,所以這裡必須使用ref宣告,不要使用out宣告。
使用時,
int temp = 8;
methodb(ref temp);
列印temp的值會變為64。
ref因為對原值進行了引用,所以ref要求傳入的一定是乙個初始化後的值,不能是未初始化的值。
int temp;
methodb(ref temp);
//原則上這樣是會錯的,但這裡我使用了乙個int,由於在宣告時int temp與int temp =0 是等價的,所以不會出錯,但如果是字串,使用這種方式完全是可以報錯的!因為string temp與string temp ="";是不等價的,你也可理解為必須賦值後才可以使用。
public void methodc(ref string s)
string temp;
methodc(ref temp);//這種就是錯誤的方式。ref要求必須形參已經賦值(初始化)。
string temp = "";
methodc(ref temp);//這種方式就是正確的。
我們定義成員方法時,如果有引用原值使用必須使用ref,防上對方傳入乙個未初始化的值,引發程式錯誤,而沒有必要對形參的值有要求時,則盡量使用out,防止呼叫時增加客戶端**量。
c# 中 ref引數到底是什麼 ?該怎麼用?
3樓:匿名使用者
static void main(string args) private static void getval(int x)//這裡只是單純的複製x=0這個變數.傳說中的傳值 private static void getrefval(ref int x)//引數x是1個指向堆疊中值型別為int的指標 //傳說中的傳址
c#語言中 ref的作用是什麼?10分!~
4樓:匿名使用者
ref 的存在是為了傳位址。就是c的指標。所以值引數加上ref就能 在函式中改變原來得值變數。
一般的引用變數就是加不加ref都無所謂。但是當呼叫函式中有new就不一樣了。
傳指標的原理是,你傳的是位址,然後在函式裡面操作那個位址指向的內容的值,所以修改後,結果保留。
但是如果不加ref,傳過去的引用跟值型別一樣,被new之後指向新的位址為某一值的一塊位址,如果是值傳遞一樣,函式裡面其實操作的是引用中儲存的位址,所以new操作對原來的引用變數無效。
加ref 相當於引用的引用,位址的位址,new後指向新的位址空間,原來的記憶體洩漏。ref 相當於&
5樓:
ref就相當於c++裡面的指標
int a = 0;
int add(int p)
add(a) ; //a還是0
int add(ref int p)
add(ref a); //a變成1
6樓:匿名使用者
首先你要知道引用是什麼意思,引用就是應用位址,當修改位址裡面的值得時候,你說會不會修改它的具體實參值呢。。
這就類似於c裡面的指標的。就是這樣的乙個過程的。
c#中ref引數的問題
7樓:然後去遠足
語法規定bai。
為何這樣規定不得而du知,私以為是zhi為了讓開發者更直dao觀的知道被 ref 修飾內的是按引用傳遞。容public void dosomething(ref object obj);
dosomething(ref obj);
dosomething(obj); // 如果不規定實參也得加,就容易混淆了
c#中ref到底有什麼作用.
8樓:匿名使用者
int是值型別,而string是引用型別,值型別改的是它的值,而引用傳遞過來的是位址,所以位址上的值也會改變。
9樓:aug詠
其實,你也不用理解抄得多複雜!你只要知道,如果用上ref的話,操作的是同乙個變數,所以會改變值,如果沒用上ref的話,操作的不是同乙個變數,所以值不會改變。這就行了!
其他的,以後學得深入了,你就會懂了!現在弄這些問題,只會令你學得很痛苦的!只不過用ref的話,呼叫的引數要在呼叫前就要初始化,初始化,你懂吧?
就是賦值!
10樓:匿名使用者
ref關鍵字用於將方法內的變數改變後帶出方法外。具體我們通過例子來說回明:
static void main(string args)static void add(int a, int b, ref int c)
最後列印出來的結果是
答3。如果沒有加ref引數,由於沒有add()方法沒有返回值,呼叫後,列印出來的結果仍然是0
11樓:匿名使用者
控制權傳遞**用方法,就是說呼叫swap()函式完成後的意思。
ref的意思就是「引用」。首不加ref的情況,swap函式執行時用到的a,b,函式外面的a,b是兩份資料;而加了ref時,則是乙份資料。
12樓:龍天騎士
簡單型別資料 呼叫時 是不回傳的 也就是 進去的時候 引數是多少 方法呼叫結束後 引數值還是多少
ref新增在引數前 就可以儲存住 引數值的更改了 適用於簡單資料型別的傳輸
c#中關鍵字ref的作用是什麼?
13樓:匿名使用者
你可以給 基本型別(比如整形) 加上ref,就按引用傳遞了。
14樓:匿名使用者
一般ref被用來傳引數
的copy。
方法bai引數上的du ref 方法zhi引數關鍵字使方法引用傳遞到方法的同乙個變
dao量。
當控制傳遞**用方法時,在方法中對引數所做的任何更改都將反映在該變數中。
若要使用 ref 引數,必須將引數作為 ref 參數顯式傳遞到方法。
ref 引數的值被傳遞到 ref 引數。 傳遞到 ref 引數的引數必須最先初始化。
將此方法與 out 引數相比,後者的引數在傳遞到 out 引數之前不必顯式初始化。 屬性不是變數,不能作為 ref 引數傳遞。
在c#中ref關鍵字的作用是啥?
15樓:
方法引數上的來 ref 方法參自數關鍵字使方法引用傳遞到bai方法的同du乙個變數。當控制傳遞**用zhi方法時,dao
在方法中對引數所做的任何更改都將反映在該變數中。 若要使用 ref 引數,必須將引數作為 ref 參數顯式傳遞到方法。ref 引數的值被傳遞到 ref 引數。
傳遞到 ref 引數的引數必須最先初始化。將此方法與 out 引數相比,後者的引數在傳遞到 out 引數之前不必顯式初始化。 屬性不是變數,不能作為 ref 引數傳遞。
什麼單詞後面加ly,單詞後面加ly是什麼意思啊?能解釋清楚一點嗎?多給我舉一些例子,讓我理解一下,謝謝啦。
絕大多數 至少90 機率 情況下,形容詞後面加了ly就變成副詞了。如你自己所舉例子,high adj.高的 字尾上ly就成了副詞 adv.高地 還有 friend 友好的 變 friendly 友好地 glad 樂意的 變 gladly 樂意地 kind 友善的 變 kindly 友善地 等等,很多...
God前要加the嗎,為什麼god前不加the,god不是專有名詞麼,sun等專有名詞不是要加the麼?
可加也可不加,要看具體情況而論。 可以加也可以不加 看具體情況 例如 god bless you money is the god 為什麼god前不加the,god不是專有名詞麼,sun等專有名詞不是要加the麼? 滾星星麼 god一般指上帝,也泛指天,是比較特殊的單詞,常見的my god god ...
前字下面加羽字唸什麼,前字下面加乙個羽字念什麼?
翦 ji n 釋義 同 剪 姓。翦 名 初生的羽毛 翦,羽初生也。一曰矢羽。說文 王筠注 翦者謂新生之羽,整齊之狀也。段玉裁注 羽初生如前齊也。前,古之翦字。姓。翦 動 剪整齊實始翦商。詩 魯頌 閟宮 翦,齊也。釋言 茅茨不翦。韓非子 五蠹 又如 翦綴 裁剪縫紉 翦發 修剪頭髮 翦燈 修剪燈芯。後常...