C中的String和string有什麼區別?還有ref關鍵

2021-09-24 15:17:11 字數 3554 閱讀 2299

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型怎麼和int型互相轉換

string轉int string str 12345 int b atoi str.c str int轉string int n 65535 char t 256 string s sprintf t,d n s t 基本思想就是將string 和char 還有int聯絡起來,char 是他們之間...

c中如何把string型別轉化為datatime

我這裡有種思路 剛學到得,希望對你有用,拋磚引玉 string converttime 2012 12 12 13 00 21 872 datetime mdate1 datetime.parseexact converttime,yyyy mm dd hh mm ss fff null conve...

c中如何把string型別轉換為double型別

隱式轉換 當對簡單的值型別進行轉換時,如果是按照 byte,short,int,long,float,double從左到右 從短到長 進行轉換的時候,可以直接進行轉換 隱式轉換 不用做任何說明。簡單的 示例 static void main string args 顯示轉換 依然是對值型別進行轉換時...