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

時間 2021-10-14 20:16:03

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型別和char型別的區別

char型別只能容納一個文字,在只想儲存並處理一個文字的時候的選擇。string是可以容納多個文字,當然一個也可以。關聯 對string進行處理的時候,有的時候,需要把string轉化成char 可以用這樣的方法 string str abcd char chr str 2 反之,由char轉化為s...

c中型別如何強制轉換,c 中如何把string型別轉換為double型別?

特特拉姆咯哦 方法 1 int適合簡單資料型別之間的轉換,c 的預設整型是int32 不支援bool型 2 int.parse string sparameter 是個靜態方法,引數型別只支援string型別 3 convert.toint32 適合將object型別轉換為int型 4 conver...

c中如何定義string陣列,C 中如何定義string陣列?

c 中定義string陣列方法 1 定義一維陣列 string parm new string 2 一維字串陣列,如果提供了初始值設定項,則還可以省略 new 運算子 string par3 擴充套件資料 c 中其他型別陣列定義方式介紹 1 定義一維int陣列 int numbers new int...