1樓:
在c#中,string指的是一個類(顏色是綠的 首字母大寫),而string是關鍵字(藍色字),他們表示的都是字串,沒有區別。
ref通俗的講就是傳地址,傳入的引數若在方法中有變化,那麼在呼叫的地方也會跟著改變
不加此關鍵字的話,傳入的值就是一個複本而已。
2樓:
string 和 string 沒有區別 string 是 string 的別名
ref 關鍵字一般只用於函式引數中,這個引數是 struct 型別,而不是 class 型別
因為 class 型別在函式中引用例項指標,所以函式內部對該引數的操作等於直接操作原例項
而 struct 型別在函式中引用資料複本,只有用指明 ref 關鍵字,它才會引用指標, int char 等都是 struct
當你有一個 struct 型別做為函式引數,又希望函式可以修改這個引數值,就要用 ref 關鍵字
functionname(int arg1, ref int arg2)
3樓:
c#中的string和string有什麼區別?
c#中這兩個沒有區別,
ref關鍵字怎麼用?
fun(ref i1);
fun(ref int i2){}
這樣在fun函式裡更改i2的值,將會影響呼叫的實參i1
c#中 string 與 ref
4樓:匿名使用者
string是引用型別,沒錯,但它的很多操作是與值型別看齊的,所以如果確實要傳地址,那就要加ref或out關鍵字,ref與out的區別在於被傳遞的變數是否存在實體地址,簡單理解是否需要初始化
要說得多的話還涉及到語法糖問題
如果是引用型別,那麼宣告一個例項應該是
string s=new string();
然後再給s賦值,而實際上並不需要這麼做
關於string,還是字串池的概念,樓主可以參考其他資料希望回答對你有幫助
5樓:
string的每個操作都會在記憶體中開闢新的值比如string s = "123";
string s1 = s.substring(0,2);
s不會變,因為在記憶體中有了新的備份,改變的是備份的值,然後賦值給s1如果不想這樣,就加上ref關鍵字,這樣就強制改變原來的值了
6樓:絕世腹黑男
stringconvert(str)是格式轉換,這裡沒用
c# ref string 引數應該填什麼?
7樓:幻想武士
隨便給一個預設值就可以了。一般情況下,string型別的就給個雙引號的空就可以了。因為在catch中捕捉到異常後,就會給它賦值,覆蓋初始值。所有,ref型別的初始值沒有什麼意思
8樓:匿名使用者
ref 關鍵字通過引用(抄而非值)傳遞引數襲。 通過引用傳遞的效果是,對所呼叫方法中的引數進行的任何更改都反映在呼叫方法中。 例如,如果呼叫方傳遞本地變數表示式或陣列元素訪問表示式,所呼叫方法會將物件替換為 ref 引數引用的物件,然後呼叫方的本地變數或陣列元素將開始引用新物件。
傳遞到 ref 形參的實參必須先經過初始化,然後才能傳遞。
9樓:匿名使用者
您的提問上不是打備註了麼?
填的是錯誤資訊
c#中swap方法是幹什麼用的?ref關鍵字的特點是什麼
10樓:他不想取名字
ref是引用傳遞的意思,有點類似於c語言中使用指標來進行變數地址傳遞的形勢。
swap是交換的意思,我估計樓主是不是看錯了,這個方法應該是在講ref的時候自己寫的一個方法,不是c#的庫方法
11樓:匿名使用者
msdn自己搜尋下吧
12樓:滿意店鋪
交換i=1
j=2swap(i,j)
i=2j=1
ref給點**你自己單步執行,會看出區別的。
using system;
public class test
static void method2(int i)static void main(string args) }懶了點,網上找的資料整理的。
c#中ref引用傳參怎麼用?
13樓:千鋒教育
static void main(string args)private static void getval(int x)//這裡只是單純du的複製x=0這個變數zhi.傳說中的傳值
private static void getrefval(ref int x)//引數daox是1個指向堆疊中值型別為int的指標
//傳說中的傳址
14樓:匿名使用者
方法的引數型別前加上ref關鍵字,呼叫時,在引數前加上ref關鍵字。具體的意義隨便找本c#的書上都會講
15樓:翅膀的初衷
protected void page_load(object sender, eventargs e)
protected void test(ref int value)
16樓:匿名使用者
這麼和你說,假如你在果園裡,你跟果農說要吃蘋果,這時候果農也許會給你一個現成的蘋果版,也許會權告訴你那邊有個蘋果樹,自己去摘!
在到程式裡,你的引數如果是string str,那麼你指是想得到一個string型別的str;就是蘋果
但如果你這麼寫 ref string str,那麼你是想得到一個string的地址,注意這裡是要地址,也就是蘋果樹。
public void faction(string str);呼叫的時候faction(“123”);就完了;
public void faction(ref string str);呼叫的時候你要faction(ref var);這裡的var是一個string型別的變數,比如string var = 18;用ref你首先得到了var這個變數,然後你就可以用18這個值了,就這意思。區別就在這,一個要值,一個要地址!
c#中關鍵字ref和out的區別
17樓:山東中公優就業
1、兩者都是按地址傳遞的,使用後都將改變原來引數的數值。
2、ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把一個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。
這個就是兩個的區別,或者說就像有的網友說的,ref是有進有出,out是隻出不進。
3、使用ref型引數時,傳入的引數必須先被初始化。out,必須在方法中對其完成初始化。
4、使用ref和out時,在方法的引數和執行方法時,都要加ref或out關鍵字。以滿足匹配。
5、out適合用在需要retrun多個返回值的地方,而ref則用在需要被呼叫的方法修改呼叫者的引用的時候。
C中的string類和String有何區別
string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 c string對映為.net framework的string 如果用string,編譯器會把它編譯成string,所以如果直接用string就可以讓編譯器少做一點點工作 如果使用c 建議使用st...
vb中string和string的區別
好幾碗粥 string 也可以 dim readers1 as string 300 是預先給readers1分配300個字元的記憶體空間,超出部分就自動截了. string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 c string對映為.net fr...
c 如何修改string中的字元
兩者雖然是字串,但記憶體中以字元陣列儲存。假如替換第i個 if i abi.length i bia.length 如果全部或部分替換,用for語句。樓下的直接改是不合適的。應該是 string bia,abi bia fdsafdsa0 abi dfdsaf abi 0 bia 0 abi 0 b...