1樓:匿名使用者
ref 的存在是為了傳地址。就是c的指標。所以值引數加上ref就能 在函式中改變原來得值變數。
一般的引用變數就是加不加ref都無所謂。但是當呼叫函式中有new就不一樣了。
傳指標的原理是,你傳的是地址,然後在函式裡面操作那個地址指向的內容的值,所以修改後,結果保留。
但是如果不加ref,傳過去的引用跟值型別一樣,被new之後指向新的地址為某一值的一塊地址,如果是值傳遞一樣,函式裡面其實操作的是引用中儲存的地址,所以new操作對原來的引用變數無效。
加ref 相當於引用的引用,地址的地址,new後指向新的地址空間,原來的記憶體洩漏。ref 相當於&
2樓:
ref就相當於c++裡面的指標
int a = 0;
int add(int p)
add(a) ; //a還是0
int add(ref int p)
add(ref a); //a變成1
3樓:匿名使用者
首先你要知道引用是什麼意思,引用就是應用地址,當修改地址裡面的值得時候,你說會不會修改它的具體實參值呢。。
這就類似於c裡面的指標的。就是這樣的一個過程的。
在c#中ref關鍵字的作用是啥?
c#中關鍵字ref的作用是什麼?
4樓:匿名使用者
你可以給 基本型別(比如整形) 加上ref,就按引用傳遞了。
c#裡傳引數 ref關鍵字的作用是什麼?
5樓:匿名使用者
傳遞引用,也就是僅僅把該引數的指標傳遞到方法裡
6樓:匿名使用者
函式中有值傳遞或引用傳遞,ref是引用傳遞,正好我也是學c#的,如果你願意,在baidu上加我為好友吧!一起討論!
c#中ref是什麼意思?怎麼運用的?求列子
7樓:匿名使用者
可以理解為類似的傳址引用,同時還有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就是引用傳遞?
C語言中的typedef語句的作用是什麼?各位大俠幫幫忙
宣告新的型別名來代替原有的型別名 比如,typedef int interger 或 typedef float real 相當於用interger來代表int型別,用real來代表float習慣上把用typedef宣告的型別用大寫字母表示 typedef聲名新的型別名來代替已有的型別名。例 typ...
c語言中的作用,C語言中 的作用
非 對其後的表示式取反,後面值為0,則取反後為1 後面為1,取反後則為0.如果awaitkey 0 的值為0,則 awaitkey 0 為1,你的迴圈就會繼續執行 否則就會退出迴圈了。就是如果你的函式awaitkey 0 返回的是非零的話,awaitkey 0 就是把其變成零,即這個條件不成立,wh...
c語言中num 10是什麼意思,C語言中num 10是什麼意思
stone李想 在c語言中 是複合賦值運算子的一種,是兩種運算 除 賦值 的結合,x 10等同於x x 10。先進行左側表示式除以右側表示式的除法運算。然後進行把結果賦值給左側表示式的賦值運算。這種運算子主要是為了簡化表示式寫法,當某個表示式要進行除法操作並且把除法結果賦值給自己的時候,可以用這種寫...