C string型別(引用型別)

2021-08-19 19:07:44 字數 950 閱讀 1022

c# string型別(引用型別)

2023年03月31日 10:34:45

閱讀數:966 名稱

cts型別

說明string

system.string

unicode字串

string str1 = "hello ";

string str2 = "world ";

這是乙個值型別的賦值,但string是乙個引用型別。string被分配在堆上,而不是棧上。因此,當把乙個字串變數賦給另乙個字串時,會得到對記憶體中同乙個字串的兩個引用。但是,string與引用型別在常見的操作上有一些區別。例如字串是不可改變的。修改其中乙個字串,就會建立乙個全新的string物件,而另乙個字串不會發生任何變化。

using system;

class stringexample

public static int main()

string s1 ="aaaa";

string s2 = s1;

console.writeline("s1:" + s1);

console.writeline("s2:" + s2);

s1 = "bbbb";

console.writeline("s1:" + s1);

console.writeline("s2:" + s2);

return 0;

輸出結果:

s1: aaaa

s2: aaaa

s1: bbbb

s2: aaaa

改變s1的值對s2沒有影響,這與引用型別的操作相反,當用"aaaa"初始化s1時,就在堆上分配了乙個新的string物件。在初始化s2時,引用也指向這個物件,所以s2的值也是"aaaa",但是當改變s1的值時,並不會替換原來的值,堆上會為新值分配乙個新的string物件,s2扔指向原來的物件,所以它的值沒有變。這實際上是運算子過載的結果。

C string 特殊引用型別

c 有string關鍵字,在翻譯成.net類時,它就是system.string.有了它,像字串連線和字串複製這樣的操作就簡單了.1 string 是引用型別還是值型別 引用型別操作 當使用過載操作符 給string物件賦值時,string的物件是引用型別,它保留在堆上,而不是堆疊上.因此,當把乙個...

C string 特殊的引用型別

net 框架程式設計 修訂版 中有這樣一段描述 string型別直接繼承自object,這使得它成為乙個引用型別,也就是說執行緒上的堆疊上不會駐留有任何字串。譯註 注意這裡的 直接繼承 直接繼承自object的型別一定是引用型別,因為所有的值型別都繼承自system.valuetype。值得指出的是...

c string型別轉換為char 型別

string 是c 標準庫裡面其中乙個,封裝了對字串的操作 把string轉換為char 有3中方法 1。data 如 string str abc char p str.data 2.c str 如 string str gdfd char p str.c str 3 copy 比如 string...